728x90
문제
https://www.acmicpc.net/problem/1620
3줄 요약
- 포켓몬 도감에 수록된 포켓몬의 개수 N과 맞춰야 하는 문제의 개수 M을 입력받습니다.
- 두 개의 HashMap을 사용하여 포켓몬 이름과 번호를 매핑하여 저장합니다.
- M개의 문제를 입력받아 해당하는 포켓몬의 번호 또는 이름을 찾아 출력합니다.
코드
// package boj1620;
import java.io.*;
import java.util.*;
import java.util.stream.Stream;
public class Main {
public static void main(String[] args) throws Exception {
// 입력 파일로부터 데이터를 읽어오기 위해 파일 입력 스트림 설정
// System.setIn(new FileInputStream("src/input.txt"));
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
// 첫 번째 줄에서 N과 M 값을 읽어와 정수 배열로 변환
int[] arr = Stream.of(br.readLine().split(" ")).mapToInt(Integer::parseInt).toArray();
int N = arr[0]; // 포켓몬 도감에 수록된 포켓몬의 개수
int M = arr[1]; // 맞춰야 하는 문제의 개수
// 포켓몬 이름을 키로, 포켓몬 번호를 값으로 가지는 HashMap 생성
Map<String, String> strToInt = new HashMap<>();
// 포켓몬 번호를 키로, 포켓몬 이름을 값으로 가지는 HashMap 생성
Map<String, String> intToStr = new HashMap<>();
// N개의 줄에 걸쳐 포켓몬 이름을 입력받아 두 HashMap에 저장
for (int i = 1; i <= N; i++) {
String name = br.readLine();
strToInt.put(name, Integer.toString(i));
intToStr.put(Integer.toString(i), name);
}
// 출력을 위한 BufferedWriter 생성
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
// M개의 줄에 걸쳐 문제를 입력받아 정답을 출력
for (int i = 0; i < M; i++) {
String key = br.readLine();
// 입력이 포켓몬 이름인 경우
if (strToInt.containsKey(key)) {
bw.write(strToInt.get(key) + "\n");
}
// 입력이 포켓몬 번호인 경우
else {
bw.write(intToStr.get(key) + "\n");
}
bw.flush(); // 출력 버퍼 플러시
}
bw.close(); // 출력 스트림 닫기
}
}
'Problem_Solving' 카테고리의 다른 글
백준(BOJ) 17219 : 비밀번호 찾기 (실버4) / 자바(Java) 풀이 (0) | 2024.05.01 |
---|---|
백준(BOJ) 1764 : 듣보잡 (실버4) / 자바(Java) 풀이 (0) | 2024.05.01 |
백준(BOJ) 1931 : 회의실 배정 (실버1) / 자바(Java) 풀이 (0) | 2024.04.30 |
백준(BOJ) 11399 : ATM (실버4) / 자바(Java) 풀이 (0) | 2024.04.30 |
백준(BOJ) 1018 : 체스판 다시 칠하기 (실버4) / 자바(Java) 풀이 (0) | 2024.04.30 |