[백준] 1764 - 듣보잡 (Java)

민영·2023년 6월 8일
0

[Algorithm] 백준

목록 보기
31/31
post-thumbnail

Problem

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

Approach & Logic

HashSet 메소드

// 컬렉션 set1과 컬렉션 set2를 비교해서
// 동일한 것만 남기고 삭제
set1.retainAll(set2) 

사전순 정렬

HashSet에는 정렬 메소드가 없기 때문에 사전순 정렬을 하기 위해 ArrayList로 바꿔서 정렬해주었다.

ArrayList<String> answer = new ArrayList<String>(nStr);
Collections.sort(answer);

Iterator

Iterator는 모든 컬렉션 프레임워크에 공통으로 사용 가능하다. 컬렉션 프레임워크에서 쉽게 값을 가져오고 제거할 수 있다.

Iterator iter = answer.iterator(); // Iterator 선언
while (iter.hasNext()) { // 다음값이 있는지 체크
	System.out.println(iter.next()); // 값 출력
}

Code

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());
        HashSet<String> nStr = new HashSet<String>();
        int m = Integer.parseInt(st.nextToken());
        HashSet<String> mStr = new HashSet<String>();

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

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

        //동일한 것만 남기고 삭제
        nStr.retainAll(mStr);
        
        //사전순으로 정렬하기 위해 ArrayList 사용
        ArrayList<String> answer = new ArrayList<String>(nStr);
        Collections.sort(answer);

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

        Iterator iter = answer.iterator(); // Iterator 선언
        while (iter.hasNext()) { // 다음값이 있는지 체크
            System.out.println(iter.next()); // 값 출력
        }
    }
}
profile
그날의 기록

0개의 댓글

관련 채용 정보