듣보잡
시간 제한 | 메모리 제한 | 제출 | 정답 | 맞은 사람 | 정답 비율 |
---|---|---|---|---|---|
2 초 | 256 MB | 24832 | 10043 | 7183 | 39.574% |
문제
김진영이 듣도 못한 사람의 명단과, 보도 못한 사람의 명단이 주어질 때, 듣도 보도 못한 사람의 명단을 구하는 프로그램을 작성하시오.
입력
첫째 줄에 듣도 못한 사람의 수 N, 보도 못한 사람의 수 M이 주어진다. 이어서 둘째 줄부터 N개의 줄에 걸쳐 듣도 못한 사람의 이름과, N+2째 줄부터 보도 못한 사람의 이름이 순서대로 주어진다. 이름은 띄어쓰기 없이 영어 소문자로만 이루어지며, 그 길이는 20 이하이다. N, M은 500,000 이하의 자연수이다.
듣도 못한 사람의 명단에는 중복되는 이름이 없으며, 보도 못한 사람의 명단도 마찬가지이다.
출력
듣보잡의 수와 그 명단을 사전순으로 출력한다.
예제 입력 1
xxxxxxxxxx
3 4
ohhenrie
charlie
baesangwook
obama
baesangwook
ohhenrie
clinton
예제 출력 1
2
baesangwook
ohhenrie
풀이
N과 M이 최대 50만이니, 2중 반복문으로 풀면 시간초과를 받으니
이분탐색으로 접근해야겠다 라고 생각이 들었습니다.
문자열의 compareTo를 이용해 위치를 파악해 풀었습니다.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.*;
public class Main {
static int n,m;
static ArrayList<String>list = new ArrayList<>();
static ArrayList<String>ans = new ArrayList<>();
public static void main(String[] args) throws NumberFormatException, IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String [] t = br.readLine().split(" ");
n = Integer.parseInt(t[0]);
m = Integer.parseInt(t[1]);
for(int i=0; i<n; i++) {
list.add(br.readLine());
}
Collections.sort(list);
for(int i=0; i<m; i++) {
String str = br.readLine();
binary_search(str);
}
Collections.sort(ans);
System.out.println(ans.size());
for(int i=0; i<ans.size(); i++) {
System.out.println(ans.get(i));
}
}
public static void binary_search(String target) {
int start = 0;
int end = list.size()-1;
while(start<=end) {
int mid = (start+end)/2;
if(list.get(mid).equals(target)) {
ans.add(target);
return ;
}
if(list.get(mid).compareTo(target) <0) {
start = mid+1;
}
else {
end = mid-1;
}
}
}
}
'알고리즘' 카테고리의 다른 글
[백준 2110] 공유기 설치 - JAVA //le_effort (0) | 2021.03.03 |
---|---|
[백준 14466] 소가 길을 건너간 이유6 -JAVA //le_effort (0) | 2021.03.02 |
[2021 KAKAO BLIND RECRUITMENT신규 아이디 추천] (0) | 2021.02.25 |
[백준 1916] 최소비용 구하기 - JAVA //le_effort (0) | 2021.02.25 |
[백준 1654] 랜선 자르기 - JAVA //le_effort (0) | 2021.02.25 |