-
[Baekjoon] 1620번 나는야 포켓몬 마스터 이다솜 (Java)Java/Baekjoon 2022. 10. 2. 20:20
처음에 HashMap만 사용해서 value값으로 key값을 찾으려다 보니 반복문을 너무 많이 돌려서 시간 초과가 났다.
이를 해결하기 위해서 String 배열을 만들어서 숫자로 포켓몬 이름을 물어볼 경우
해당 인덱스에서 포켓몬 이름을 찾아냈더니 시간 초과가 해결되었다.
예제 입력
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
예제 출력1
Pikachu 26 Venusaur 16 14
import java.util.HashMap; import java.util.Scanner; public class Main { public static void main(String[] args){ Scanner scan = new Scanner(System.in); String[] num = scan.nextLine().split(" "); HashMap<String, Integer> map = new HashMap<String, Integer>(); StringBuilder sb = new StringBuilder(); String[] arr = new String[Integer.parseInt(num[0])+1]; // 포켓몬 번호는 1부터 시작하기 때문에 크기를 1늘림 for(int i = 0; i < Integer.parseInt(num[0]); i++){ String str = scan.nextLine(); arr[i+1] = str; // 포켓몬 번호는 1부터 시작하기 때문에 +1 map.put(str, i+1); } for(int i = 0; i < Integer.parseInt(num[1]); i++){ String str = scan.nextLine(); if(Character.isDigit(str.charAt(0))){ // 첫 번째 글자가 숫자인지 아닌지 확인 // 숫자면 인덱스를 이용해서 배열에서 찾아냄 sb.append(arr[Integer.parseInt(str)]).append("\n"); }else{ // 문자일 경우에는 HashMap의 key(포켓몬 이름)로 value(번호)를 찾아냄 sb.append(map.get(str)).append("\n"); } } System.out.println(sb); } }
728x90'Java > Baekjoon' 카테고리의 다른 글
[Baekjoon] 11047번 동전 0 (Java) (0) 2022.10.03 [Baekjoon] 1764번 듣보잡 (Java) (0) 2022.10.02 [Baekjoon] 11723번 집합 (Java) (0) 2022.10.02 [Baekjoon] 1676번 팩토리얼 0의 개수 (Java) (0) 2022.10.02 [Baekjoon] 11053번 가장 긴 증가하는 부분 수열 (Java) (0) 2022.08.31