백준 - 듣보잡(1764) - HashMap - Java

chaemin·2024년 7월 20일
0

백준

목록 보기
25/26

1. 문제

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

2. 풀이

ArrayList에 넣어서 contains으로 파악할려했더니 시간초과가 발생하였다.

따라서 HashMap을 이용하여 value가 2인지 확인해줘야 하는 문제였다.

✨핵심 Point

for(int i = 0; i < N + M; i++)

으로 한번에 입력받는다. N과 M을 나눠서 받았더니 그러면 name별로 count가 어렵기 때문에 한번에 입력받고, 이를 2가 되면 answerList에넣어주는 것으로 확인한다.

3. 코드

import java.util.*;
import java.io.*;

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());
        Map<String, Integer> map = new HashMap<>();
        ArrayList<String> answerList = new ArrayList<>();
        
        for(int i = 0; i < N + M; i++){
            String name = br.readLine();
            map.put(name, map.getOrDefault(name, 0) + 1);
            if(map.get(name) == 2){
                answerList.add(name);
            }
        }
        
        Collections.sort(answerList);
        
        System.out.println(answerList.size());
        for(int i = 0; i < answerList.size(); i++){
            System.out.println(answerList.get(i));
        }
    }
}

0개의 댓글

관련 채용 정보