이번문제는 HashMap을 사용하여 key값으로 value를 찾도록 하는 문제다
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.HashMap;
import java.util.StringTokenizer;
public class PocketmonMaster {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringTokenizer st = new StringTokenizer(br.readLine(), " ");
int N = Integer.parseInt(st.nextToken());
int M = Integer.parseInt(st.nextToken());
// int를 Key값으로 저장하는 HashMap과
// String을 Key값으로 저장하는 HashMap을 각각 하나씩 생성해준다
HashMap<String, Integer> stringKeyList = new HashMap<String, Integer>();
HashMap<Integer, String> intKeyList = new HashMap<Integer, String>();
for(int i=1; i<=N; i++) {
String s = br.readLine();
stringKeyList.put(s, i);
intKeyList.put(i, s);
}
StringBuilder sb = new StringBuilder();
for(int i=0; i<M; i++) {
String temp = br.readLine();
// 입력받은 값이 숫자라면 intKeyList에서 탐색
// 입력받은 값이 문자라면 stringKeyList에서 탐색
if(isNumberic(temp)) {
sb.append(intKeyList.get(Integer.parseInt(temp))).append("\n");
} else {
sb.append(stringKeyList.get(temp)).append("\n");
}
}
br.close();
System.out.println(sb);
}
public static boolean isNumberic(String s) {
try{
// 들어온 값이 숫자가 아니라면 NumberFormatException이 발생하면서
// 아래에 작성한 catch 문으로 넘어가면서 false를 return한다
Double.parseDouble(s);
return true;
} catch (NumberFormatException e) {
return false;
}
반응형
'Java > 알고리즘' 카테고리의 다른 글
[Java] 프로그래머스 [PCCP 기출문제] 1번 / 붕대 감기 (0) | 2024.09.27 |
---|---|
[Java] 프로그래머스 [PCCE 기출문제] 10번 / 공원 (0) | 2024.09.24 |
[Java] 백준-11047 동전 0 (그리디 알고리즘) (0) | 2022.10.20 |
[Java] 백준-1764 듣보잡 (0) | 2022.10.20 |
[Java] 백준-1966 프린터 큐 (ArrayList를 통한 풀이방식) (0) | 2022.10.10 |
댓글