공부하기/백준

[Java] 백준 풀기 17219 - 비밀번호 찾기

XEV 2023. 9. 21. 22:43

자바 백준 17219번

실버 4

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

 

17219번: 비밀번호 찾기

첫째 줄에 저장된 사이트 주소의 수 N(1 ≤ N ≤ 100,000)과 비밀번호를 찾으려는 사이트 주소의 수 M(1 ≤ M ≤ 100,000)이 주어진다. 두번째 줄부터 N개의 줄에 걸쳐 각 줄에 사이트 주소와 비밀번

www.acmicpc.net

 

 

 

 

 

문제 보기

분류: 자료 구조, 해시를 사용한 집합과 맵

 

 

 

 

 

문제 풀기

문제에서 힌트로 주어진 BufferedReader와 BufferedWriter를 사용하여 입력과 출력을 한다.

해시맵을 이용하여 사이트 주소와 비밀번호를 입력받고 get() 메서드를 이용하여 출력해야할 사이트의 비밀번호를 가져온 후 출력한다.

 

 

 

 

 

코드 보기

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.HashMap;
import java.util.Map;
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));
// N과 M 값을 입력
String[] nm = br.readLine().split(" ");
int N = Integer.parseInt(nm[0]); // 저장된 사이트 주소의 수
int M = Integer.parseInt(nm[1]); // 비밀번호를 찾으려는 사이트 주소의 수
// 저장된 사이트 주소와 비밀번호를 저장하는 Map을 생성
Map<String, String> passwordMap = readPasswordMap(br, N);
// 비밀번호를 찾고 출력
findAndPrintPasswords(br, bw, passwordMap, M);
// 출력 버퍼를 비우고 입력/출력 스트림 종료
bw.flush();
br.close();
bw.close();
}
// 저장된 사이트 주소와 비밀번호를 입력받아 Map에 저장하는 함수
private static Map<String, String> readPasswordMap(BufferedReader br, int N) throws IOException {
Map<String, String> passwordMap = new HashMap<>();
for (int i = 0; i < N; i++) {
// 각 줄에서 사이트 주소와 비밀번호를 읽어와 Map에 저장
String[] siteInfo = br.readLine().split(" ");
String site = siteInfo[0]; // 사이트 주소
String password = siteInfo[1]; // 비밀번호
passwordMap.put(site, password);
}
return passwordMap;
}
// 비밀번호를 찾고 출력하는 함수
private static void findAndPrintPasswords(BufferedReader br, BufferedWriter bw, Map<String, String> passwordMap, int M) throws IOException {
for (int i = 0; i < M; i++) {
// 비밀번호를 찾으려는 사이트 주소를 읽어옴
String siteToFind = br.readLine();
// 사이트 주소를 키로 사용하여 비밀번호를 찾음
String password = passwordMap.get(siteToFind);
// 찾은 비밀번호를 출력 버퍼에 기록
bw.write(password + "\n");
}
}
}