[백준] 1620 나는야 포켓몬 마스터 이다솜 - Java / Python
해시 맵을 사용해서 풀어야 한다.
일반 배열을 사용하게 되면 이름을 입력으로 받을 때 반복문을 돌게 돼 시간 초과가 발생한다.
포켓몬 클래스를 만들어서 객체를 생성하는 방향으로도 풀 수 있을 것 같긴 한데.. 이렇게 하면 시간이 좀 더 오래 걸릴 것 같아 시도하지는 않았다.
Java
import java.util.*;
import java.io.*;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder();
StringTokenizer st = new StringTokenizer(br.readLine(), " ");
int N = Integer.parseInt(st.nextToken());
int M = Integer.parseInt(st.nextToken());
HashMap<String, String> pokemon = new HashMap<>();
for(int i=1; i<N+1; i++){
String pokename = br.readLine();
String temp = String.valueOf(i);
pokemon.put(pokename,temp);
pokemon.put(temp,pokename);
}
for(int i=0; i<M; i++){
String quiz = br.readLine();
if(quiz.charAt(0) >= '0' && quiz.charAt(0) <= '9'){
int quiznum = Integer.parseInt(quiz);
sb.append(pokemon.get(quiz)).append('\n');
}else{
sb.append(pokemon.get(quiz)).append('\n');
}
}
System.out.println(sb);
}
}
Python
딕셔너리를 사용해서 쉽게 풀 수 있다.
import sys
input = sys.stdin.readline
N,M = map(int, input().split(" "))
pokemon = {}
for i in range(1, N+1):
a = input().rstrip()
pokemon[i] = a
pokemon[a] = i
for i in range(M):
quiz = input().rstrip()
if quiz.isdigit():
print(pokemon[int(quiz)])
else:
print(pokemon[quiz])
입력에 따라오는 개행문자를 제거해 주기 위해 rstrip() 함수를 사용했다.
전반적인 흐름은 자바 풀이와 같다.
반응형
'Algorithm > Baekjoon' 카테고리의 다른 글
[백준] 2504 괄호의 값 - Java / Python (0) | 2022.02.12 |
---|---|
[백준] 2346 풍선 터뜨리기 - Java / Python (0) | 2022.02.11 |
[백준] 1725 히스토그램 - Java (0) | 2021.11.17 |
[백준] 1016 제곱ㄴㄴ수 - Java (0) | 2021.11.17 |
[백준] 6549 히스토그램에서 가장 큰 직사각형 - Java (0) | 2021.11.14 |
댓글
이 글 공유하기
다른 글
-
[백준] 2504 괄호의 값 - Java / Python
[백준] 2504 괄호의 값 - Java / Python
2022.02.12 -
[백준] 2346 풍선 터뜨리기 - Java / Python
[백준] 2346 풍선 터뜨리기 - Java / Python
2022.02.11 -
[백준] 1725 히스토그램 - Java
[백준] 1725 히스토그램 - Java
2021.11.17 -
[백준] 1016 제곱ㄴㄴ수 - Java
[백준] 1016 제곱ㄴㄴ수 - Java
2021.11.17