알고리즘 풀이/백준

[1764] 백준 - 듣보잡(JAVA)

데롱디롱 2021. 8. 11. 15:47
728x90

- 듣도 못한 사람 이름 key로하는 map을 만든다.

- 듣도 못한 사람 목록을 오름차순 정렬한다. => TreeMap이용

- 듣도 못한 사람이 보도 못한 사람에도 속하면 value true로 바꿔준다.

- map을 순회하면서, 듣보잡인 사람(true)을 출력한다.

 

 

 

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Set;
import java.util.StringTokenizer;
import java.util.TreeMap;

public class Main {

	public static void main(String[] args) throws IOException {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		StringTokenizer st = new StringTokenizer(br.readLine());
		int N = Integer.parseInt(st.nextToken());
		int M = Integer.parseInt(st.nextToken());

		// 듣도 못한 명단
		HashMap<String, Boolean> people = new HashMap();
		for (int i = 0; i < N; i++)
			people.put(br.readLine(), false);

		// 오름차순 정렬
		TreeMap<String, Boolean> tm = new TreeMap<String, Boolean>(people);
		Set<String> keyset = people.keySet();
		Iterator<String> keyiterator = tm.keySet().iterator();

		// 보도 못한 사람에도 속하면 true
		for (int i = 0; i < M; i++) {
			String person = br.readLine();
			if (tm.containsKey(person))
				tm.put(person, true);
		}

		int num = 0;
		StringBuilder sb = new StringBuilder();
		for (String key : tm.keySet()) {
			if (tm.get(key) == true) {
				num++;
				sb.append(key + "\n");
			}
		}
		
		System.out.println(num);
		System.out.println(sb.toString());
	}

}