티스토리 뷰

Algorithm

[백준 1764번/자바] 듣보잡

도도고영 2023. 8. 10. 08:57

문제

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

입력

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

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

출력

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


1) 첫 번째 입력값들을 HashSet에 저장하고

2) 두 번째 입력값들 중 위 HashSet에 저장되어 있는 데이터가 있다면

리스트에 저장.

3) 그리고 리스트를 정렬해서 출력. 

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Collections;
import java.util.HashSet;
import java.util.LinkedList;
import java.util.List;
import java.util.Set;
import java.util.StringTokenizer;

public class BJ1764 {
	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());
		
		// 듣도 못한 사람
		Set<String> set = new HashSet<>();
		for (int i = 0; i < n; i++) {
			set.add(br.readLine());
		}

		// 보도 못한 사람
		List<String> list = new LinkedList<>();
		for (int i = 0; i < m; i++) {
			String name = br.readLine();
			
			if(set.contains(name)) {
				list.add(name);
			}
		}
		
		// 정렬
		Collections.sort(list);
		
		
		// 출력
		StringBuilder result = new StringBuilder();
		result.append(list.size() + "\n");
		for (String name : list) {
			result.append(name + "\n");
		}
		System.out.println(result);
	}
}

그리고 알긴하는데 명확히 다시 정립하고 싶어서 gpt한테 물어봄. 

객체의 다형성.

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
글 보관함