Notice
Recent Posts
Link
반응형
All :L
[BOJ/Java] 비밀번호 찾기 (17219) 본문
반응형
1. 문제 분석
문제 개요
- 이 문제는 특정 사이트의 비밀번호를 저장해두고, 나중에 그 사이트에 해당하는 비밀번호를 빠르게 조회할 수 있는 프로그램을 작성하는 것이다.
- 주어진 사이트와 비밀번호 쌍을 저장하고, 이후 요청된 사이트의 비밀번호를 출력하는 문제다.
입력 형식
- 첫 줄에 저장할 사이트의 수 N과 조회할 사이트의 수 M이 주어진다.
- 이후 N개의 줄에 사이트 주소와 비밀번호가 주어진다.
- 그 다음 M개의 줄에는 조회할 사이트 주소가 주어진다.
출력 형식
- 요청된 사이트 주소에 해당하는 비밀번호를 순서대로 출력한다.
2. 알고리즘 종류
이 문제는 해시맵(HashMap) 자료구조를 사용하여, 사이트 주소를 키(key)로, 비밀번호를 값(value)으로 저장해 빠르게 조회할 수 있도록 한다.
3. 주요 부분 및 코드 작성 방법
1. HashMap 사용
- HashMap<String, String>을 사용하여 사이트 주소와 비밀번호를 저장하고, 나중에 입력받은 사이트 주소를 키로 비밀번호를 조회한다.
2. 입출력 최적화
- BufferedReader와 BufferedWriter를 사용해 입력과 출력을 효율적으로 처리한다.
4. 코드 설명
메인 함수 (main)
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.StringTokenizer; public class baekjoon_0717_17219 { public static void main(String[] args) throws IOException { BufferedReader bf = new BufferedReader(new InputStreamReader(System.in)); BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out)); String nm = bf.readLine(); // 첫 줄에서 N과 M을 읽음 StringTokenizer st = new StringTokenizer(nm); int N = Integer.parseInt(st.nextToken()); // 저장할 사이트의 수 int M = Integer.parseInt(st.nextToken()); // 조회할 사이트의 수 // 사이트 주소와 비밀번호를 저장할 해시맵 생성 HashMap<String, String> info = new HashMap<String, String>(); String[] a; // N개의 사이트 주소와 비밀번호를 입력받아 해시맵에 저장 for(int i = 0; i < N; i++) { String text = bf.readLine(); a = text.split(" "); info.put(a[0], a[1]); } // M개의 조회할 사이트 주소를 입력받아 해당 비밀번호를 출력 for(int i = 0; i < M; i++) { String site = bf.readLine(); bw.write(info.get(site)); // 해시맵에서 비밀번호 조회 bw.newLine(); // 개행 } bw.flush(); // 출력 버퍼를 비움 bw.close(); // BufferedWriter 종료 } }
- 입력 처리: BufferedReader와 StringTokenizer를 사용해 효율적으로 입력을 처리한다.
- HashMap 사용: 사이트 주소와 비밀번호를 해시맵에 저장해, O(1) 시간 복잡도로 비밀번호를 조회할 수 있다.
- 출력 처리: BufferedWriter를 사용해 출력할 내용을 모아 한 번에 출력하여 성능을 최적화한다.
5. 요약
- 이 코드는 HashMap을 이용해 사이트 주소와 비밀번호를 저장하고, 이후 해당 사이트 주소로 비밀번호를 빠르게 조회하는 프로그램이다.
- 입출력 효율성을 고려해 BufferedReader와 BufferedWriter를 사용했다.
반응형
'CODING > BOJ' 카테고리의 다른 글
[BOJ/Java] 알파벳 (1987) (0) | 2024.08.26 |
---|---|
[BOJ/Java] 적록색약 (10026) (0) | 2024.08.25 |
[BOJ/Java] 도키도키 간식드리미 (12789) (0) | 2024.08.25 |
[BOJ/Java] 단지번호붙이기 (2667) (0) | 2024.08.24 |
8장 SQL 응용 (DML - SELECT (1/2)) (0) | 2023.04.15 |