ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [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
Designed by Tistory.