백준 1764 - 듣보잡 (java)

J·2022년 9월 17일
0

알고리즘 문제풀이

목록 보기
7/21

문제 정리


입력

듣도 못한 사람 수, 보도 못한 사람 수
듣도 못한 사람 한 줄에 한명씩
보도 못한 사람 한 줄에 한명씩

출력

김진영이 듣도 보도 못한사람 수
김진영이 듣도 보도 못한사람을 출력

idea 정리


예전에 풀 때는 듣도 못한 사람, 보도 못한 사람을 한 배열에 넣고 정렬해서
값이 두 번씩 있는 사람만 모아서 출력하는 방식을 썼었는데
왜인지 모르겠지만 틀렸었다, 그건 왜 틀렸는지 아직도 잘 모르겠다

그 후로 다시 풀면서 HashSet을 적용해서 풀었다

알고리즘 정리


  1. 듣도 못한 사람을 HashSet에 저장
  2. 보도 못한 사람을 입력받으면서 듣도 못한 사람인지 확인
    -> 만약 듣도 보도 못한 사람이면 결과 List에 저장
  3. 결과 List를 정렬 후 출력

구현


//듣보잡
public class Main {
	public static void main(String[] args) throws NumberFormatException, IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
		
		StringTokenizer st = new StringTokenizer(br.readLine(), " ");
		
		int N = Integer.parseInt(st.nextToken());
		int M = Integer.parseInt(st.nextToken());
		
		Set<String> names = new HashSet<>();
		List<String> result = new ArrayList<>();
		
		for(int i=0; i<N; i++) {
			names.add(br.readLine());
		}
		
		for(int i=0; i<M; i++) {
			String str = br.readLine();
			if(names.contains(str))
				result.add(str);
		}
		
		Collections.sort(result);
		
		bw.write(result.size() + "\n");
		for(String str: result) {
			bw.write(str + "\n");
		}
		bw.flush();
		bw.close();
		br.close();
	}
}

결과


0개의 댓글