본문 바로가기
문제 풀이/백준

[JAVA06] 1764. 듣보잡

by hyeminigo 2024. 9. 2.

1764. 듣보잡 (S4)

시간 제한 메모리 제한 제출 정답 맞힌 사람 정답 비율
2초 256 MB 118259 50985 39795 41.462 %
 
 

문제

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

입력

첫째 줄에 듣도 못한 사람의 수 N, 보도 못한 사람의 수 M이 주어진다. 이어서 둘째 줄부터 N개의 줄에 걸쳐 듣도 못한 사람의 이름과, N+2째 줄부터 보도 못한 사람의 이름이 순서대로 주어진다. 이름은 띄어쓰기 없이 알파벳 소문자로만 이루어지며, 그 길이는 20 이하이다. N, M은 500,000 이하의 자연수이다.

듣도 못한 사람의 명단에는 중복되는 이름이 없으며, 보도 못한 사람의 명단도 마찬가지이다.

출력

듣보잡의 수와 그 명단을 사전순으로 출력한다.


summary

듣보잡의 수와 그 명단을 사전순으로 출력

 

- 듣도 못한 사람(N)과 보도 못한 사람(M) 겹치는 사람찾기

- 사전 순으로 출력

 

strategy

배열로 이중 for문을 돌리면 시간초과.

 

- HashSet 에 '듣보 못한 사람' 문자열을 담는다. (listen)

- TreeSet 에 '보도 못한 사람' 과 '듣도 못한 사람' 모두 해당하는 사람 담는다. (see) 

 

note

-  N, M은 500,000 이하의 자연수

- 이름은 띄어쓰기 없이 알파벳 소문자로만 이루어지며, 그 길이는 20 이하

 

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

public class Main {

    static int N, M;
    static Set<String> listen = new HashSet<>();
    static Set<String> see = new TreeSet<>();
    
    public static void main(String[] args) throws IOException {
        
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringBuilder answer = new StringBuilder();

        StringTokenizer st = new StringTokenizer(br.readLine());
        N = Integer.parseInt(st.nextToken());
        M = Integer.parseInt(st.nextToken());

        for(int n = 0; n < N; n++) {
            listen.add(br.readLine());
        }

        for(int m = 0; m < M; m++) {
            String name = br.readLine();
            if(listen.contains(name)) see.add(name);
        }
        
        answer.append(see.size()).append("\n");
        for(String person : see){
            answer.append(person).append("\n");
        }
        System.out.println(answer);

    }
}

 

문제 결과 메모리 시간 언어코드 길이
1764 맞았습니다!! 25992 236 ms  Java 11 / 수정 968

 

MEMO

- HashSet 조회 시 시간 복잡도는 O(1) 이다.

- TreeSet 은 정렬돼서 담긴다.

'문제 풀이 > 백준' 카테고리의 다른 글

[JAVA 09] 13549. 숨바꼭질3  (1) 2024.09.03
[JAVA 07] 11723.플로이드  (1) 2024.09.02
[JAVA05] 1620. 나는야 포켓몬 마스터 이다솜  (2) 2024.08.31
[JAVA04] 2529. 부등호  (0) 2024.08.30
[JAVA 03] 1697. 숨바꼭질  (0) 2024.08.29