풀이방법
사용된 것:
HashMap
2022.03.27
번호를 입력받았다면 포켓몬 이름을 출력하고,
포켓몬 이름을 출력받았다면 번호를 출력해야 한다.
두 가지 기준으로 빠르게 자료를 찾아와야 하는 문제이다.
가장 적합한 자료구조가 무엇인지를 판단하는 게 관건이었다.
해시맵을 사용해야겠다는 생각은 쉽게 해낼 수 있었지만,
이름과 번호 두 가지 기준을 고려해야 한다는 까다로운 조건이 있어서
해시맵 사용을 해도 시간초과가 날 수 있는 문제였다.
이로 인한 시행착오를 오답노트에 적어두었다.
HashMap<String, Integer> 하나와 String[] 하나를 사용하면 된다.
코드
Java(2022.03.27)
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.HashMap;
import java.util.Map;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws IOException{
// TODO Auto-generated method stub
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> searchNumbers = new HashMap<String, Integer>();
String[] searchNames = new String[n+1];
for(int i = 0; i<n; i++) {
String temp = br.readLine();
searchNumbers.put(temp, i+1);
searchNames[i+1] = temp;
}
for(int i = 0; i<m; i++) {
String input = br.readLine();
if(searchNumbers.containsKey(input)) {
//주어진 데이터가 포켓몬의 이름인 경우
System.out.println(searchNumbers.get(input));
}else {
//주어진 데이터가 포켓몬의 번호인 경우
System.out.println(searchNames[Integer.parseInt(input)]);
}
}
}
}
'알고리즘 문제풀이 > 백준' 카테고리의 다른 글
#11723 : 집합 (0) | 2022.03.28 |
---|---|
#15312 : 이름 궁합 (0) | 2022.03.27 |
#1181 : 단어 정렬 (0) | 2022.03.26 |
#10951 : A + B - 4 (0) | 2022.03.26 |
#1932 : 정수 삼각형 (0) | 2022.03.24 |