-
[백준] 1620번 : 나는야 포켓몬 마스터 이다솜 - 자바(JAVA)알고리즘/백준 2022. 8. 28. 00:01
https://www.acmicpc.net/problem/1620
문제 해석
N의 범위는 10만입니다.
M의 범위도 10만입니다.
O(NM)의 경우 100억이기 때문에 2중포문으로는 시간초과가 발생합니다.
HashMap을 해결하여 문제를 해결했습니다.
이름을 번호로 가지는 하나의 Map
순서를 기준으로 이름을 가지는 하나의 Map
숫자인지 문자인지 구분하기 위해서는 Character.isDigit 메서드를 활용하여 첫문자가 숫자인지 알파벳인지 확인합니다.
코드
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.HashMap; import java.util.Map; import java.util.StringTokenizer; public class Main_1620_나는야포켓몬마스터이다솜 { public static void main(String[] args) throws IOException { BufferedReader br = new BufferedReader(new InputStreamReader(System.in)); StringTokenizer st = new StringTokenizer(br.readLine()); int N = Integer.parseInt(st.nextToken()); int M = Integer.parseInt(st.nextToken()); Map<Integer, String> name = new HashMap<>(); Map<String, Integer> order = new HashMap<>(); for (int i = 1; i <= N; i++) { String temp = br.readLine(); name.put(i, temp); order.put(temp, i); } StringBuilder sb = new StringBuilder(); for (int i = 0; i < M; i++) { String temp = br.readLine(); if (Character.isDigit(temp.charAt(0))) { int number = Integer.parseInt(temp); sb.append(name.get(number) + "\n"); } else { sb.append(order.get(temp) + "\n"); } } System.out.println(sb.toString()); } }
'알고리즘 > 백준' 카테고리의 다른 글
[백준] 1697번 : 숨바꼭질 - 자바(JAVA) (0) 2022.08.31 [백준] 2630번 : 색종이만들기 - 자바(JAVA) (0) 2022.08.30 [백준] 10814번 : 나이순 정렬 (0) 2022.08.25 [백준] 2164번 : 카드2 - 자바(JAVA) (0) 2022.08.24 [백준] 16953번 : A -> B - 자바(JAVA) (0) 2022.08.22