less than 1 minute read

듣보잡

백준 1764번 상세보기

문제

김진영이 듣도 못한 사람의 명단과, 보도 못한 사람의 명단이 주어질 때, 듣도 보도 못한 사람의 명단을 구하는 프로그램을 작성하시오.

Flow.

  • 듣도 못한 사람 && 보도 못한 사람
  • 즉, 2곳 다 속해있는 사람은 듣보잡이다.
  • HashMap을 사용하여 해당 사람(Key) 의 Value가 2인 사람들이 듣보잡 명단이 될것이다.
  • 반복문에서 Value가 2인사람이 나올 때 마다 카운트를 해주었고, 문제의 조건에 사전순으로 출력한다 라는 조건 때문에, 정답 리스트를 만들어 추가해주었다.
  • 총 카운트와 정렬된 정답리스트를 출력

Code.

package hash;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Scanner;

public class P1764 {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);

		int n = sc.nextInt();
		int m = sc.nextInt();

		HashMap<String, Integer> map = new HashMap<>();

		for (int i = 0; i < n + m; i++) {
			String key = sc.next();
			map.put(key, map.getOrDefault(key, 0) + 1);
		}

		ArrayList<String> answer = new ArrayList<>();
		int cnt = 0;
		for (String key : map.keySet()) {
			if (map.get(key).equals(2)) {
				cnt++;
				answer.add(key);
			}
		}
		answer.sort(null);
		System.out.println(cnt);
		for (String s : answer) {
			System.out.println(s);
		}
	}
}

Leave a comment