BOJ 1620 : 나는야 포켓몬 마스터 이다솜 - https://www.acmicpc.net/problem/1620
입력으로 주어지는 포켓몬 정보를 잘 저장해두고, 입력으로 숫자가 들어왔다면 그 숫자에 해당하는 포켓몬의 이름을, 문자가 들어왔으면 그 포켓몬의 이름에 해당하는 번호를 출력하면 된다.
문자와 숫자 모두 답을 내야하기 때문에 HashMap을 2개 만들어서 각각 Integer->String, String->Integer로 매핑되도록 구현했다.
입력으로 들어온 문자열이 숫자라면 Integer를 key로 가지는 Map에서 꺼내고, 문자라면 String을 key로 가지는 Map에서 꺼내오면 된다!
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.HashMap;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String[] inputs = br.readLine().split(" ");
int n = Integer.parseInt(inputs[0]);
int m = Integer.parseInt(inputs[1]);
HashMap<Integer, String> map_int = new HashMap<>();
HashMap<String, Integer> map_str = new HashMap<>();
for (int i = 1; i <= n; i++) {
String name = br.readLine();
map_int.put(i, name);
map_str.put(name, i);
}
StringBuilder sb = new StringBuilder();
for (int i = 1; i <= m; i++) {
String tmp = br.readLine();
if(isNum(tmp)){
sb.append(map_int.get(Integer.parseInt(tmp))+"\n");
}else{
sb.append(map_str.get(tmp)+"\n");
}
}
System.out.println(sb);
}
public static boolean isNum(String str) {
for (int i = 0; i < str.length(); i++) {
if (!Character.isDigit(str.charAt(i))) {
return false;
}
}
return true;
}
}
✔ 알고리즘 분류 - 자료 구조, 해시를 사용한 집합과 맵
✔ 난이도 - ⚪ Silver 4
public static boolean isNum(String str) {
for (int i = 0; i < str.length(); i++) {
if (!Character.isDigit(str.charAt(i))) {
return false;
}
}
return true;
}
딱히 없음