문제 해석
틀린 코드
import java.io.*;
import java.util.*;
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));
StringTokenizer st = new StringTokenizer(br.readLine());
int N = Integer.parseInt(st.nextToken()); //도감에 등록된 포캣몬 개수
int M = Integer.parseInt(st.nextToken()); // 맞춰야 하는 포켓몬 개수
HashMap<Integer, String> poketArray = new HashMap<>(); //저장할 포켓몬 도감
for(int i = 1; i <= N; i++){
poketArray.put(i, br.readLine());
}
for(int i = 0; i < M; i++){
String pocket = br.readLine();
for (Map.Entry<Integer, String> pair : poketArray.entrySet()) {
if(pocket.charAt(0) - 'A' >= 0){ // 이름을 입력 받았으면 -A 했으면 0보다 크거나 같을 것이다.
if(pair.getValue().equals(pocket)){
bw.write(pair.getKey() + "\n");
}
}else{//0보다 크거나 같지않으면 숫자인 경우이다.
if(pair.getKey() == Integer.parseInt(pocket)){
bw.write(pair.getValue() + "\n");
}
}
}
}
br.close();
bw.flush();
bw.close();
}
}
틀린 결과
맞은 코드
import java.io.*;
import java.util.*;
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));
StringTokenizer st = new StringTokenizer(br.readLine());
int N = Integer.parseInt(st.nextToken());
int M = Integer.parseInt(st.nextToken());
HashMap<Integer, String> poketArray_String = new HashMap<>(); //value가 숫자인
HashMap<String, Integer> pocketArray_int = new HashMap<>(); //value가 문자열
for(int i = 1; i <= N; i++){
String str = br.readLine();
//두번 다 넣어줘야한다.
poketArray_String.put(i, str);
pocketArray_int.put(str, i);
}
for(int i = 0; i < M; i++){
String pocket = br.readLine();
if(isNum(pocket)){ //숫자이면
bw.write(poketArray_String.get(Integer.parseInt(pocket)) + "\n");
}else{
bw.write(pocketArray_int.get(pocket) + "\n");
}
}
br.close();
bw.flush();
bw.close();
}
public static boolean isNum(String str) { //숫자 체크 함수(숫자이면 true, 숫자아니면 false)
for (int i = 0; i < str.length(); i++) {
if (!Character.isDigit(str.charAt(i))) {
return false;
}
}
return true;
}
}
맞은 결과
느낀 점