[java/백준] 1764번 듣보잡

2024. 2. 26. 14:14·PS

문제

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

입력

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

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

출력

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

 

package 백준.정렬;
import java.io.*;
import java.util.ArrayList;
import java.util.StringTokenizer;
import java.util.Arrays;

public class baekjoon_1764 {
    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());


        String[] st1=new String[N];
        ArrayList<String> list=new ArrayList<String>();

        for (int i=0;i<N;i++){
            st1[i]=br.readLine();
        }

        Arrays.sort(st1);

        for (int i=0;i<M;i++){
            String st2=br.readLine();
            for (int j=0;j<N;j++)
            {
                if (st2.equals(st1[j]))
                    list.add(st2);
            }

        }

        System.out.println(list.size());

        for (String s:list){
            System.out.println(s);
        }

    }

}

 

for문으로 풀었더니 시간초과가 떴다 .. 

모르겠어서 구글링 해보니 Hashset<>을 사용해야 하는 것 같다

 

 

 

Hashset의 특징

1. 중복을 허용하지 않으며 하나의 null 값 저장 가능

2. 순서대로 저장되지 않는다.

package 백준.정렬;
import java.io.*;
import java.util.*;

public class baekjoon_1764 {
    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());


        String[] str=new String[N];
        ArrayList<String> list=new ArrayList<String>();
        HashSet<String> stringHashSet=new HashSet<>();

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

        for (int i=0;i<M;i++){
            String s=br.readLine();
            if(stringHashSet.contains(s))
                list.add(s);
        }

        Collections.sort(list);
        System.out.println(list.size());

        for (int i=0;i<list.size();i++){
            System.out.println(list.get(i));
        }

    }

}

 

 

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

 

1764번: 듣보잡

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

www.acmicpc.net

 

'PS' 카테고리의 다른 글

[백준] 16564 - 히오스 프로그래머  (2) 2025.01.11
[프로그래머스] lv2. 가장 큰 수  (1) 2025.01.04
[java/백준] 1316번- 그룹 단어 체커  (1) 2023.08.31
[java/백준] 1094번- 막대기  (1) 2023.08.25
[java/백준] 2693번- N번째 큰 수  (3) 2023.08.23
'PS' 카테고리의 다른 글
  • [백준] 16564 - 히오스 프로그래머
  • [프로그래머스] lv2. 가장 큰 수
  • [java/백준] 1316번- 그룹 단어 체커
  • [java/백준] 1094번- 막대기
zioni
zioni
  • zioni
    jiwon's dev.log
    zioni
  • 전체
    오늘
    어제
    • 분류 전체보기 (76)
      • spring & java (13)
      • Algorithm (14)
      • PS (37)
      • project (3)
      • experience (1)
      • etc (6)
      • study (2)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

    • Github
  • 공지사항

  • 인기 글

  • 태그

    백준2525
    java
    자바
    백준
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.6
zioni
[java/백준] 1764번 듣보잡
상단으로

티스토리툴바