JAVA/Coding Test

[JAVA] 백준 1764 듣보잡_집합과맵

오늘도개발 2023. 3. 4. 09:28

https://www.acmicpc.net/problem/1764

 

1764번: 듣보잡

첫째 줄에 듣도 못한 사람의 수 N, 보도 못한 사람의 수 M이 주어진다. 이어서 둘째 줄부터 N개의 줄에 걸쳐 듣도 못한 사람의 이름과, N+2째 줄부터 보도 못한 사람의 이름이 순서대로 주어진다.

www.acmicpc.net

 

접근 : 

 

 - N , M 을 입력받는다.

 

- N 명에 해당하는 사람 수 만큼 Map에 저장한다.

 

- 이 후 M 명의 사람을 받을 때, N 에 저장된 이름이면 List에 저장한다.

 

- List 를 사전 순서대로 정렬 한 후, 인원수 및 이름 들을 출력한다.

 

 

코드 구현 :

 

import java.io.*;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;

public class Main {

	public static void main(String[] args) throws IOException {

		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		StringBuilder sb = new StringBuilder();

		String[] inputs = br.readLine().split(" ");
		int n = Integer.parseInt(inputs[0]);
		int m = Integer.parseInt(inputs[1]);
		String temp = "";

		HashMap<String, Integer> n_numbers = new HashMap<>();
		ArrayList<String> m_numbers = new ArrayList<>();

		for (int i = 0; i < n; i++) {
			n_numbers.put(br.readLine(), 1);
		}

		int result = 0;

		for (int j = 0; j < m; j++) {
			temp = br.readLine();
			if (n_numbers.containsKey(temp)) {
				m_numbers.add(temp);
				result++;
			}
		}

		sb.append(result).append("\n");

		Collections.sort(m_numbers);
		for (String str : m_numbers) {
			sb.append(str).append("\n");
		}

		System.out.println(sb);
		br.close();
	}
}