목록전체 글 (753)
쌓고 쌓다
메소드 오버라이딩 슈퍼 클래스에 작성된 메소드와 동일하게 똑같이 서브 클래스에 재작성하는 것이다. 이는 슈퍼 클래스의 메소드를 무시하고 서브 클래스에 오버라이딩 된 메소드를 실행할 수 있게 해 준다. 예시 class Person { void Speak() { System.out.println("사람입니다."); } } class Student extends Person { void Speak() // Student에 오버 라이딩 { System.out.println("학생입니다."); } } Person 클래스의 Speak는 사람입니다. 라고 출력을 Student 클래스의 Speak는 학생입니다.라고 출력을 하는 메소드를 작성했습니다. Person person = new Person(); person.S..
https://www.acmicpc.net/problem/14425 14425번: 문자열 집합 첫째 줄에 문자열의 개수 N과 M (1 ≤ N ≤ 10,000, 1 ≤ M ≤ 10,000)이 주어진다. 다음 N개의 줄에는 집합 S에 포함되어 있는 문자열들이 주어진다. 다음 M개의 줄에는 검사해야 하는 문자열들이 주어 www.acmicpc.net #include #include using namespace std; map m; int N, M; string str; int res = 0; int main(void) { cin >> N >> M; for (int i = 0; i > str; m.insert(pair(str, true)); } for (int i = 0; i < M..
업 캐스팅 class Person { String name; int age; } class Student extends Person { String grade; } public class Main{ public static void main(String[] args) { Person person; Student student = new Student(); person = student; // 업 캐스팅 } } 서브 클래스(자식)는 슈퍼 클래스(부모)의 모든 멤버를 가지기 때문에, 서브 클래스의 객체를 슈퍼클래스의 객체로 취급이 가능하다. 즉, 업 캐스팅은 슈퍼 클래스의 레퍼런스로 서브 클래스의 객체를 가리키게 하는 것이다. 하지만, 업 캐스팅한 레퍼런스로 모든 멤버에 접근은 불가능하고 슈퍼 클래스의 멤버..
슈퍼 클래스와 서브 클래스의 생성자 실행 순서 class A { A() { System.out.println("A 생성자 실행"); } } class B extends A { B() { System.out.println("B 생성자 실행"); } } class C extends B { C() { System.out.println("C 생성자 실행"); } } public class Main{ public static void main(String[] args) { C c = new C(); } } 실행 결과 C는 B를 상속받고, B는 A를 상속받는 구조이다. 여기서 C 클래스의 객체를 생성하면 A-B-C순서로 생성자가 실행 된다. 즉, 슈퍼 클래스의 생성자를 먼저 실행한다. 그 후 서브 클래스의 생성자를..
https://www.acmicpc.net/problem/2346 2346번: 풍선 터뜨리기 1번부터 N번까지 N개의 풍선이 원형으로 놓여 있고. i번 풍선의 오른쪽에는 i+1번 풍선이 있고, 왼쪽에는 i-1번 풍선이 있다. 단, 1번 풍선의 왼쪽에 N번 풍선이 있고, N번 풍선의 오른쪽에 1번 풍선 www.acmicpc.net #include #include using namespace std; deque dq; int N; int main(void) { cin >> N; int num; for (int i = 0; i > num; dq.push_back(make_pair(num,i+1)); // 덱에 이동해야할 수와 몇번째였는지 저장 } while (!dq.empty()..
final 키워드는 3가지로 사용된다. 1. final 클래스 final class finalClass{ } class subClass extends finalClass // 컴파일 에러 { } 클래스 앞에 final 키워드를 사용할 경우 그 클래스는 상속 받아 사용할 수 게 된다. 즉, final 클래스는 상속 받을수 없게 된다. 2. final 함수(메소드) class superClass{ public final int sum(int a,int b) { return a+b; } } class subClass extends superClass{ public int sum(int a,int b) // 컴파일 에러 { return a+b+10; } } 함수에다 final 키워드를 사용한다면 그 함수는 오버..
모든 노드에서 모든 노드의 최단 경로를 구할 때 사용 양의 가중치와 음의 가중치 모두 사용 가능 하지만 음의 가중치 일 경우 사이클이 없어야함. 기본 초기화 방법 V : 정점의 개수 E : 간선의 개수 arr[i][j] : i에서 j로 가는 비용 int V, E; int arr[101][101]; int a, b, c; cin >> V >> E; for (int i = 0; i > a >> b >> c; // a에서 b로 다닐수 있는 비용 c인 길 arr[a][b] = c; arr[b][a] = c; } 이렇게 처음에 정점의 개수와 간선의 개수를 입력받고 간서의 개수만큼 a b c 를 입력 받는다( a에서 b로 다닐 수 있는 비용 c인 길 ) 위의 코드는 양방향으로 길을 놓..
https://www.acmicpc.net/problem/1956 1956번: 운동 첫째 줄에 V와 E가 빈칸을 사이에 두고 주어진다. (2 ≤ V ≤ 400, 0 ≤ E ≤ V(V-1)) 다음 E개의 줄에는 각각 세 개의 정수 a, b, c가 주어진다. a번 마을에서 b번 마을로 가는 거리가 c인 도로가 있다는 의 www.acmicpc.net #include #include using namespace std; int V, E; int arr[401][401]; int res = 987654321; int main(void) { int a, b, c; cin >> V >> E; for (int i = 0; i > a >> b >> c; arr[a][b] = c; } for..