Seize your moment! 👾

안녕하세요. Eric입니다. 제 블로그에 방문해주셔서 감사합니다.

💻 개발공부/Algorithm

[Eirc's 백준] 1764번 - 듣보잡 - Java 알고리즘

Eric_ko 2023. 1. 15. 10:43

 

저는 해쉬를 이용해서 풀어보았습니다.

 

import java.util.*;

public class N1764 {
    public static void main(String[] args) {
        Scanner kb = new Scanner(System.in);
        int n = kb.nextInt();
        int m = kb.nextInt();
        String[] a = new String[n];
        String[] b = new String[m];
        for (int i = 0; i < n; i++) {
            a[i] = kb.next();
        }
        for (int i = 0; i < m; i++) {
            b[i] = kb.next();
        }
        for (String x : solution(a, b)) {
            System.out.println(x);
        }
    }
    public static ArrayList<String> solution(String[] a , String [] b) {
        ArrayList<String> answer = new ArrayList<>();
        HashMap<String, Integer> mapA = new HashMap<>();
        //듣도 못한사람 넣기
        for (String x : a) {
            mapA.put(x, mapA.getOrDefault(x, 0) + 1);
        }
        //보도 못한 사람 값 중복체크
        for (String x : b) {
            mapA.put(x, mapA.getOrDefault(x, 0) -1); // 중복된 String 제거
        }
        int cnt = 0;
        for (String key : mapA.keySet()) {
            if (mapA.get(key) == 0) {
                answer.add(key);
                cnt++; // 갯수세기
            }
        }
        answer.add(String.valueOf(cnt));
        Collections.sort(answer); // 정렬
        return answer; 
    }
}

Solved.ac 프로필