Hope Everyone Is Happy

[실버4] 1764. 듣보잡 (Java) 본문

※ 백준 (Baekjoon)/[Java] 문제 풀이 ( Solve the problems)

[실버4] 1764. 듣보잡 (Java)

J 크 2023. 8. 30. 20:11
728x90
반응형

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

 

1764번: 듣보잡

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

www.acmicpc.net

내가 바로 듣보잡,,


※  문제를 요약하면 아래와 같습니다.

  김진영님이 듣도 못한 사람의 명단, 보도 못한 사람의 명단이 주어질 때, 듣도 보도 못한 사람의 명단 구하기

  Input : 첫줄에 듣도 못한 사람의 명단, 보도 못한 사람의 명단 이후 N줄 만큼 듣도못한명단, M줄만큼 보도못한명단

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


◈ Input - 1

3 4
ohhenrie
charlie
baesangwook
obama
baesangwook
ohhenrie
clinton

◈ Output - 1

2
baesangwook
ohhenrie

 ◎  코드 작성 전, 아래와 같이 솔루션을 정리하였습니다.

단순히 String 배열로 Contains 하면 시간 초과!

hashSet 자료형을 통해 Hash구조를 활용하여 문자열 일치 여부 탐색

 결과를 사전순으로 정렬


import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashSet;
import java.util.StringTokenizer;

public class Main {

	public static void main(String[] args) throws IOException {
		// TODO Auto-generated method stub
		BufferedReader bReader = new BufferedReader(new InputStreamReader(System.in));
		BufferedWriter bWriter = new BufferedWriter(new OutputStreamWriter(System.out));

		StringTokenizer st = new StringTokenizer(bReader.readLine());
		int N = Integer.parseInt(st.nextToken());
		int M = Integer.parseInt(st.nextToken());
		
		HashSet<String> setHear = new HashSet<>();
		
		for(int i = 0; i < N; i++)
			setHear.add(bReader.readLine());
		
		ArrayList<String> arrStr = new ArrayList<>();
		for(int i = 0; i < M; i++) {
			String strTemp = bReader.readLine();
			if(setHear.contains(strTemp))
				arrStr.add(strTemp);
		}
		
		Collections.sort(arrStr);
		
		bWriter.write(arrStr.size() + "\n");
		for(int i = 0 ; i < arrStr.size(); i++) {
			bWriter.write(arrStr.get(i) + "\n");
		}

		// bWriter.write(String.valueOf(narrTemp));
		bWriter.flush();
		bWriter.close();
	}
}

 2주전에 Hash를 공부했는데 고새 까먹어버리기,,,

Good Luck! (피드백 감사합니다!)