1. 컬렉션 프레임워크란? 2. List 컬렉션 3. Set 컬렉션 4. Map 컬렉션 | 컬렉션 프레임워크란? 객체들을 효율적으로 추가, 삭제, 검색 할 수 있도록 인터페이스와 구현 클래스를 java.utill 패키지에서 제공하는데 이것을 컬렉션 프레임워크(Collection Framework) 라고 한다. 객체 저장소로서 배열을 사용할 수도 있지만 배열은 선언 시 크기를 정해야하고, 또 정한 크기를 변경할 수 없을 뿐만 아니라 항목을 저장, 삭제, 추가하는 메소드가 없기 대문에 인덱스를 사용해야 하는 번거로움이 있다. 이를 대신해 컬렉션 프레임워크를 사용한다. 컬렉션 프레임워크의 주요 인터페이스로는 List, Set, Map이 있다. | List 컬렉션 List 컬렉션은 배열과 비슷하게 인덱스를 관리..
문제 어떤 단어를 뒤에서부터 읽어도 똑같다면 그 단어를 팰린드롬이라고 한다. 'radar', 'sees'는 팰린드롬이다. 수도 팰린드롬으로 취급할 수 있다. 수의 숫자들을 뒤에서부터 읽어도 같다면 그 수는 팰린드롬수다. 121, 12421 등은 팰린드롬수다. 123, 1231은 뒤에서부터 읽으면 다르므로 팰린드롬수가 아니다. 또한 10도 팰린드롬수가 아닌데, 앞에 무의미한 0이 올 수 있다면 010이 되어 팰린드롬수로 취급할 수도 있지만, 특별히 이번 문제에서는 무의미한 0이 앞에 올 수 없다고 하자. 입력 입력은 여러 개의 테스트 케이스로 이루어져 있으며, 각 줄마다 1 이상 99999 이하의 정수가 주어진다. 입력의 마지막 줄에는 0이 주어지며, 이 줄은 문제에 포함되지 않는다. 출력 각 줄마다 주어..
1. 얕은복사 (Shallow Copy) 2. 깊은복사 (Deep Copy) | 얕은복사 (Shallow Copy) 얕은 복사는 쉽게 말해 '주소 값'을 복사한다는 의미이다. 복사한 객체 B가 원본 객체 A의 주소값을 복사하여 그 안에 있는 힙 영역을 참조한다. 만약 객체 A의 메모리 값을 변경 한다면, 객체 B도 같은 메모리 값을 공유하고 있기 때문에 함께 변경이 된다. 예를들어, A와 B는 201호 집 열쇠를 각자 가진 채로 같은 집에 살고있다고 생각하면 쉽다. 장점 : 같은 힙영역을 공유하고 있기 때문에 메모리를 절약하고 빠르다. 단점 : A를 변경 시 B도 같이 변경되기 때문에 주의가 필요하다. 문법 : int[] A = {1,2,3,4,5}; int[] B = A; B[0] = 6; A = [6..
문제 수직선 위에 N개의 좌표 X1, X2, ..., XN이 있다. 이 좌표에 좌표 압축을 적용하려고 한다. Xi를 좌표 압축한 결과 X'i의 값은 Xi > Xj를 만족하는 서로 다른 좌표의 개수와 같아야 한다. X1, X2, ..., XN에 좌표 압축을 적용한 결과 X'1, X'2, ..., X'N를 출력해보자. 입력 첫째 줄에 N이 주어진다. 둘째 줄에는 공백 한 칸으로 구분된 X1, X2, ..., XN이 주어진다. 출력 첫째 줄에 X'1, X'2, ..., X'N을 공백 한 칸으로 구분해서 출력한다. 입력예제 5 2 4 -10 4 -9 출력예제 2 3 0 3 1 풀이 import java.io.*; import java.util.*; public class Main { public static v..
문제 온라인 저지에 가입한 사람들의 나이와 이름이 가입한 순서대로 주어진다. 이때, 회원들을 나이가 증가하는 순으로, 나이가 같으면 먼저 가입한 사람이 앞에 오는 순서로 정렬하는 프로그램을 작성하시오. 입력 첫째 줄에 온라인 저지 회원의 수 N이 주어진다. (1 ≤ N ≤ 100,000) 둘째 줄부터 N개의 줄에는 각 회원의 나이와 이름이 공백으로 구분되어 주어진다. 나이는 1보다 크거나 같으며, 200보다 작거나 같은 정수이고, 이름은 알파벳 대소문자로 이루어져 있고, 길이가 100보다 작거나 같은 문자열이다. 입력은 가입한 순서로 주어진다. 출력 첫째 줄부터 총 N개의 줄에 걸쳐 온라인 저지 회원을 나이 순, 나이가 같으면 가입한 순으로 한 줄에 한 명씩 나이와 이름을 공백으로 구분해 출력한다. 입력..
문제 알파벳 소문자로 이루어진 N개의 단어가 들어오면 아래와 같은 조건에 따라 정렬하는 프로그램을 작성하시오. 길이가 짧은 것부터 길이가 같으면 사전 순으로 단, 중복된 단어는 하나만 남기고 제거해야 한다. 입력 첫째 줄에 단어의 개수 N이 주어진다. (1 ≤ N ≤ 20,000) 둘째 줄부터 N개의 줄에 걸쳐 알파벳 소문자로 이루어진 단어가 한 줄에 하나씩 주어진다. 주어지는 문자열의 길이는 50을 넘지 않는다. 출력 조건에 따라 정렬하여 단어들을 출력한다. 입력예제 13 but i wont hesitate no more no more it cannot wait im yours 출력예제 i im it no but more wait wont yours cannot hesitate 풀이 import jav..
문제 2차원 평면 위의 점 N개가 주어진다. 좌표를 y좌표가 증가하는 순으로, y좌표가 같으면 x좌표가 증가하는 순서로 정렬한 다음 출력하는 프로그램을 작성하시오. 입력 첫째 줄에 점의 개수 N (1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 N개의 줄에는 i번점의 위치 xi와 yi가 주어진다. (-100,000 ≤ xi, yi ≤ 100,000) 좌표는 항상 정수이고, 위치가 같은 두 점은 없다. 출력 첫째 줄부터 N개의 줄에 점을 정렬한 결과를 출력한다. 입력예제 5 0 4 1 2 1 -1 2 2 3 3 출력예제 1 -1 1 2 2 2 3 3 0 4 풀이 import java.io.*; import java.util.Arrays; import java.util.Comparator; publi..
문제 2차원 평면 위의 점 N개가 주어진다. 좌표를 x좌표가 증가하는 순으로, x좌표가 같으면 y좌표가 증가하는 순서로 정렬한 다음 출력하는 프로그램을 작성하시오. 입력 첫째 줄에 점의 개수 N (1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 N개의 줄에는 i번점의 위치 xi와 yi가 주어진다. (-100,000 ≤ xi, yi ≤ 100,000) 좌표는 항상 정수이고, 위치가 같은 두 점은 없다. 출력 첫째 줄부터 N개의 줄에 점을 정렬한 결과를 출력한다. 입력예제 5 3 4 1 1 1 -1 2 2 3 3 출력예제 1 -1 1 1 2 2 3 3 3 4 풀이 import java.io.*; import java.util.Arrays; import java.util.Comparator; publi..