1764번
문제
김진영이 듣도 못한 사람의 명단과, 보도 못한 사람의 명단이 주어질 때, 듣도 보도 못한 사람의 명단을 구하는 프로그램을 작성하시오.
문제 해결 순서
- 처음엔 n, m 각각의 개수만큼 숫자를 저장하는 리스트를 생성해서 자바의 Contains클래스를 활용했다.
- 위 방법은 어떻게 써도 시간초과가 떠서 실패함.
- 2번째 방법으로 n + m 만큼 반복하며 하나의 리스트에 전부 저장한 후 리스트를 정렬.
- 정렬된 리스트를 돌며 i번째와 i + 1번째가 같다면 sb에 추가하고 count를 증가시켜줌.
- 위 방법은 통과했는데, 자바의 Contains는 그리 빠른 클래스가 아닌가보다. sort가 더 빠른듯.
import java.io.*;
import java.util.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String temp[] = br.readLine().split(" ");
ArrayList<String> arrayn = new ArrayList<>();
StringBuffer sb = new StringBuffer();
int n = Integer.parseInt(temp[0]);
int m = Integer.parseInt(temp[1]);
int count = 0;
for (int i = 0; i < n + m; i++){
String s = br.readLine();
arrayn.add(s);
}
Collections.sort(arrayn);
for (int i = 0; i < (n + m) - 1; i++){
if (arrayn.get(i).equals(arrayn.get(i + 1))){
sb.append(arrayn.get(i) + "\n");
count++;
}
}
System.out.println(count);
System.out.print(sb);
}
}

