백준 1764 듣보잡[Java]

seren-dev·2022년 8월 13일
0

백준 - 집합과 맵

목록 보기
4/5

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

접근

문자열 Set을 이용하여 듣도 못한 사람을 저장, 이후 ArrayList에 듣도 보도 못한 사람을 저장

나의 풀이

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

public class Main {

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

        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));

        StringTokenizer st = new StringTokenizer(br.readLine());
        int n = Integer.parseInt(st.nextToken());
        int m = Integer.parseInt(st.nextToken());

        HashSet<String> set = new HashSet<>();

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

        ArrayList<String> answer = new ArrayList<>();
        for (int i = 0; i < m; i++) {
            String str = br.readLine();
            if (set.contains(str))
                answer.add(str);
        }

        bw.write(answer.size()+"\n");
        Collections.sort(answer);

        for (String str : answer) {
            bw.write(str+"\n");
        }

        bw.flush();
        bw.close();
        br.close();
    }
}
  • 사전순으로 출력해야 하기 때문에 Collections.sort()를 사용할 수 있는 ArrayList에 듣도 보도 못한 사람의 명단을 저장한다.

Collections.sort() 는 List 인터페이스만 사용할 수 있다.


나의 풀이2

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

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());

        HashSet<String> set = new HashSet<>();

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

        ArrayList<String> answer = new ArrayList<>();
        for (int i = 0; i < m; i++) {
            String str = br.readLine();
            if (set.contains(str))
                answer.add(str);
        }

        StringBuilder sb = new StringBuilder();
        sb.append(answer.size() + "\n");
        Collections.sort(answer);

        for (String str : answer) {
            sb.append(str + "\n");
        }

        System.out.println(sb);
    }
}
  • BufferedWriter를 사용하는 것보다 StringBuilder를 사용하는 것이 메모리와 시간을 조금 줄일 수 있다.

0개의 댓글