1. 문제
- 입력
첫 줄에는 도감에 수록된 포켓몬 수 N과 문제의 개수 M이 주어진다. (1 <= N, M <= 100,000)
둘째 줄 부터는 N개의 줄에 포켓몬 이름이 번호 순서대로 한 줄 씩 주어진다.
포켓몬 이름은 모두 영어이고, 첫 글자만 대문자고 나머지는 소문자이다. 일부 포켓몬은 마지막 문자만 대문자일 수도 있다. 이름 최대 길이는 20, 최소 길이는 2이다.
그 다음부터는 M개의 줄에 퀴즈가 주어진다. 도감 번호 또는 포켓몬 이름이 주어지면 해당하는 포켓몬 이름 또는 도감 번호를 출력하면 된다. (도감번호->포켓몬 이름, 포켓몬 이름->도감번호 출력)
도감에 없는 포켓몬은 퀴즈로 주어지지 않는다.
- 출력
답을 M개의 줄에 하나씩 출력한다.
- 설명
예제 입력 | 예제 출력 |
26 5 Bulbasaur Ivysaur Venusaur Charmander Charmeleon Charizard Squirtle Wartortle Blastoise Caterpie Metapod Butterfree Weedle Kakuna Beedrill Pidgey Pidgeotto Pidgeot Rattata Raticate Spearow Fearow Ekans Arbok Pikachu Raichu 25 Raichu 3 Pidgey Kakuna |
Pikachu 26 Venusaur 16 14 |
1620번: 나는야 포켓몬 마스터 이다솜
첫째 줄에는 도감에 수록되어 있는 포켓몬의 개수 N이랑 내가 맞춰야 하는 문제의 개수 M이 주어져. N과 M은 1보다 크거나 같고, 100,000보다 작거나 같은 자연수인데, 자연수가 뭔지는 알지? 모르면
www.acmicpc.net
2. 풀이
시간 초과가 뜨지 않으려면 이름이 키, 번호가 값인 딕셔너리와 번호가 키, 이름이 값인 딕셔너리를 따로 만들어 써야한다.
// 나는야 포켓몬 마스터 이다솜
int[] input = Array.ConvertAll(Console.ReadLine().Split(" "), int.Parse);
int N = input[0]; int M = input[1];
Dictionary<int, string> numDict = new Dictionary<int, string>();
Dictionary<string, int> nameDict = new Dictionary<string, int>();
for (int i = 0; i < N; i++) {
string pokemon = Console.ReadLine();
numDict.Add(i+1, pokemon);
nameDict.Add(pokemon, i+1);
}
using (StreamWriter sw = new StreamWriter(Console.OpenStandardOutput())) {
for (int i =0; i < M; i++) {
string quiz = Console.ReadLine();
if (nameDict.ContainsKey(quiz))
sw.WriteLine(nameDict[quiz]);
else
sw.WriteLine(numDict[int.Parse(quiz)]);
}
}
'컴퓨터&프로그래밍 > Baekjoon' 카테고리의 다른 글
[백준/C#] 1764 - 듣보잡 (0) | 2023.11.04 |
---|---|
[백준/C#] 10816 - 숫자 카드 2 (0) | 2023.11.03 |
[백준/C#] 7785 - 회사에 있는 사람 (0) | 2023.11.01 |
[백준/C#] 14425 - 문자열 집합 (0) | 2023.10.30 |
[백준/C#] 10815 - 숫자 카드 (0) | 2023.10.29 |