목록분류 전체보기 (718)
쌓고 쌓다
https://www.acmicpc.net/problem/11003 11003번: 최솟값 찾기 N개의 수 A1, A2, ..., AN과 L이 주어진다. Di = Ai-L+1 ~ Ai 중의 최솟값이라고 할 때, D에 저장된 수를 출력하는 프로그램을 작성하시오. 이때, i ≤ 0 인 Ai는 무시하고 D를 구해야 한다. www.acmicpc.net #include #include #include #include using namespace std; vector v; deque dq; int N, L; int main(void) { cin.tie(0); cout.tie(0); ios_base::sync_with_stdio(0); int num; cin >> N >> L; for (int i = 0; i < N;..
인터페이스(interface) 인터페이스는 interface 키워드를 사용하여 일종의 규격을 정의하는 것이다. interface Animal { public static final int age = 999; // 상수 필드, public static final 생략 가능 public abstract void Sound(); // 추상 메소드, public abstract 생략 가능 public default void Print() // default 메소드, public 생략 가능 { System.out.println("default 메소드"); } } 인터페이스의 구성 멤버 변수(필드)는 만들 수 없다. default, private, static 메소드들은 모두 인터페이스에 코드가 작성되어 있어야 한..
https://www.acmicpc.net/problem/1275 1275번: 커피숍2 첫째 줄에 수의 개수 N과 턴의 개수 Q가 주어진다.(1 ≤ N, Q ≤ 100,000) 둘째 줄에는 처음 배열에 들어가 있는 정수 N개가 주어진다. 세 번째 줄에서 Q+2번째 줄까지는 x y a b의 형식으로 x~y까지의 합 www.acmicpc.net #include #include using namespace std; vector v; int N, Q; long long Tree[400001]; long long init(int start,int end,int node) { if (start == end) return Tree[node] = v[start]; int mid = (start + end) / 2; r..
추상 메소드 추상 메소드는 선언은 되어 있으니 코드가 구현되어 있지 않는 껍데기만 있는 메소드이다. 상속에서 슈퍼 클래스로 사용되며 추상 메소드를 작성하기 위해 abstract 키워드를 사용한다. public abstract String getName(); // 추상 메소드 public abstract setName(String str); // 추상 메소드 public abstract String fail() // 컴파일 에러 발생 ( 코드 작성이 이루어 지면 안됨 ) { return "추상 클래스 실패"; } 추상 클래스가 되는 방법 1. 추상 메소드를 포함하는 클래스 abstract class Person{ // 추상 클래스 선언 abstract public void Speak(); // 추상 메소드..
https://www.acmicpc.net/problem/2776 2776번: 암기왕 연종이는 엄청난 기억력을 가지고 있다. 그래서 하루 동안 본 정수들을 모두 기억 할 수 있다. 하지만 이를 믿을 수 없는 동규는 그의 기억력을 시험해 보기로 한다. 동규는 연종을 따라 다니며, www.acmicpc.net #include #include using namespace std; map m; int T, N, M; int main(void) { cin >> T; cin.tie(0); cout.tie(0); ios_base::sync_with_stdio(0); while (T--) { int num; m.clear(); cin >> N; for (int i = 0; i > num;..
메소드 오버라이딩 슈퍼 클래스에 작성된 메소드와 동일하게 똑같이 서브 클래스에 재작성하는 것이다. 이는 슈퍼 클래스의 메소드를 무시하고 서브 클래스에 오버라이딩 된 메소드를 실행할 수 있게 해 준다. 예시 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; // 업 캐스팅 } } 서브 클래스(자식)는 슈퍼 클래스(부모)의 모든 멤버를 가지기 때문에, 서브 클래스의 객체를 슈퍼클래스의 객체로 취급이 가능하다. 즉, 업 캐스팅은 슈퍼 클래스의 레퍼런스로 서브 클래스의 객체를 가리키게 하는 것이다. 하지만, 업 캐스팅한 레퍼런스로 모든 멤버에 접근은 불가능하고 슈퍼 클래스의 멤버..