문제
https://www.acmicpc.net/problem/1620
내가 작성한 코드
import java.util.*;
import java.io.*;
public class qor1620 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
String[] inputs = br.readLine().split(" ");
int N = Integer.parseInt(inputs[0]);
int M = Integer.parseInt(inputs[1]);
Map<String, Integer> nameOfMon = new HashMap<>();
Map<Integer, String> indexOfMon = new HashMap<>();
for(int i = 0; i < N; i++) {
String name = br.readLine();
nameOfMon.put(name, i+1);
indexOfMon.put(i, name);
}
for(int i = 0; i < M; i++) {
String question = br.readLine();
if(nameOfMon.containsKey(question)) {
bw.write(Integer.toString(nameOfMon.get(question)));
bw.newLine();
} else {
bw.write(indexOfMon.get(Integer.parseInt(question)-1));
bw.newLine();
}
}
bw.flush();
bw.close();
}
}
오랜만에 BufferedWriter를 사용해보았다.
문제의 관건은 Map을 2개 쓰는 게 아닐까 싶었다
처음에는 List<String>만 쓰고 어떻게 안 될까 싶었는데
"숫자가 주어질 경우"는 성공적으로 가져오지만 "문자가 주어질 경우"는 가져오기가 애매했다.
try catch 문을 사용하기도 애매하고
int, String을 판단하기도 애매하고
그래서 각각에 맞는 자료형을 따로 만들어야겠다 싶었고 Map을 이용했다
처음에는 containsKey, containsValue가 있길래 그냥 Map하나로 할 수 있지 않을까 싶었는데
get이 key를 이용해 value를 가져오는 것밖에 없더라
그래서 그냥 Map 2개 만들어서 각각에 맞게 출력하도록 해주었다.
근데 이걸또 System.out.println을 쓰니까 출력이 누락되는 경우가 발생하더라
그래서 오랜만에 BufferedWriter 사용해서 저장해놨다가 마지막에 다 출력하도록 해주었다.
'자바 > 백준' 카테고리의 다른 글
| [백준 10798] 세로읽기 (0) | 2024.08.16 |
|---|---|
| [백준 1032] 명령 프롬프트 (0) | 2024.08.16 |
| [백준 1764] 듣보잡 (0) | 2024.08.07 |
| [백준 1302] 베스트셀러 (0) | 2024.08.07 |
| [백준 17478] 재귀함수가 뭔가요? (0) | 2023.04.04 |