중략
이 문제의 핵심은
'알파벳으로 들어오면 번호를 말하고'
'숫자로 들어오면 문자(포켓몬 이름)을 출력'
입니다
번호와 포켓몬 이름을 잘 연결하는게 포인트입니다
처음엔 딕셔너리 구조로 하려고했는데
실패했습니다...
HashMap을 이용해봅시다
전에 사용한 HashSet과 HashMap은 차이가 좀 있습니다
HashSet은 수학의 집합과 비슷하고 중복이 안되며
HshMap은 Key, Value 짝꿍을 만들어줍니다
Key는 중복을 허락하지 않습니다
1. 포켓몬 이름(String), 번호(Integer)를 짝지어서 HashMap을 만듭시다
2. 문제를 낼 때는 포켓몬 이름인지 번호인지 판단을 해서
3. 출력합시다
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.HashMap;
import java.util.StringTokenizer;
public class Main {
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());
HashMap<String, Integer> nameMap = new HashMap<String, Integer>();
String[] nameArr = new String[n + 1];
StringBuilder sb = new StringBuilder();
for(int i = 1; i < n + 1; i++) {
String name = br.readLine();
nameMap.put(name, i);
nameArr[i] = name;
}
for(int i=0;i<m;i++) {
String findStr = br.readLine();
if(StringorNumber(findStr)) {
int index = Integer.parseInt(findStr);
sb.append(nameArr[index]);
}
else {
sb.append(nameMap.get(findStr));
}
sb.append("\n");
}
System.out.println(sb.toString());
}
public static boolean StringorNumber(String s) {
try {
Double.parseDouble(s);
return true;
}
catch (NumberFormatException e) {
return false;
}
}
}
nameArr 를 이용해서 번호값으로 포켓몬 이름을 찾을 수 있게 했습니다
다시 생각해보니
이렇게하면 딕셔너리 구조를 이용해도 될것같은 기분이 드네요
'백준 문제풀기 > JAVA' 카테고리의 다른 글
[백준 1735 JAVA 자바] 분수 합 (0) | 2023.07.30 |
---|---|
[백준 1712 JAVA 자바] 손익분기점 (0) | 2023.07.30 |
[백준 1546 JAVA 자바] 평균 (0) | 2023.07.30 |
[백준 1475 JAVA 자바] 방 번호 (0) | 2023.07.30 |
[백준 1436 JAVA 자바] 영화감독 숌 (0) | 2023.07.30 |