Sliver
입력
- 첫 번째 줄에 도감에 수록된 포켓몬의 수 N(1 ≤ N ≤ 100,000)과 맞춰야 하는 문제의 개수 M(1 ≤ M ≤ 100,000)이 주어집니다.
- 두 번째 줄부터 N개의 줄에는 각 포켓몬의 이름이 번호 순서대로 주어집니다.
- 그 다음 M개의 줄에는 포켓몬의 이름 또는 번호가 주어집니다.
출력
- 입력된 이름에 해당하는 포켓몬의 번호 또는 입력된 번호에 해당하는 포켓몬의 이름을 출력합니다.
풀이
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
StringBuilder sb = new StringBuilder();
Map<String, Integer> nameToNumberMap = new HashMap<>();
int N1 = sc.nextInt();
int N2 = sc.nextInt();
String[] numberToNameArr = new String[N1];
sc.nextLine();
for(int i=1; i<=N1; i++){
String name = sc.nextLine();
nameToNumberMap.put(name, i);
numberToNameArr[i-1] = name;
}
for(int i=0; i<N2; i++){
String str = sc.nextLine();
if(Character.isDigit(str.charAt(0)))
sb.append(numberToNameArr[Integer.parseInt(str)-1]);
else
sb.append(nameToNumberMap.get(str));
sb.append("\n");
}
System.out.println(sb);
sc.close();
}
}
자료구조가 Map인 nameToNumberMap으로는 (key : 포켓몬이름, value : 포켓몬 번호) 형태로 데이터를 저장하여 포켓몬 이름으로 포켓몬 번호 정보를 빠르게 가져올 수 있도록 하였고,
문자열 배열인 numberToNameArr 에는 포켓몬의 이름을 저장하여, 포켓몬 번호로 포켓몬의 이름을 빠르게 가져올 수 있도록 하였다.
https://www.acmicpc.net/problem/1620
'Algorithm > Baekjoon Oline Judge - Java' 카테고리의 다른 글
[백준] 1929_소수구하기 / 에라토스테네스의 체 알고리즘 (1) | 2024.06.01 |
---|---|
[백준] 2485_가로수 / 최대공약수, 유클리드호재법 (0) | 2024.06.01 |
[백준] 1427_ 소트인사이드 / StringBuilder.reverse(), Collections.reverseOrder() (0) | 2024.05.26 |
[백준] 11650_좌표정렬하기 / Arrays.sort( ) 람다식 (0) | 2024.05.26 |
[백준] 10825_숫자카드 / 이진탐색 * (0) | 2024.05.26 |