백준(Java)/23년 4월
[Java] 백준 - 1620번: 나는야 포켓몬 마스터 이다솜
C0MPAS
2023. 4. 11. 17:29
4월 11일(화) - 집합과 맵 (1620번)
1620번: 나는야 포켓몬 마스터 이다솜
첫째 줄에는 도감에 수록되어 있는 포켓몬의 개수 N이랑 내가 맞춰야 하는 문제의 개수 M이 주어져. N과 M은 1보다 크거나 같고, 100,000보다 작거나 같은 자연수인데, 자연수가 뭔지는 알지? 모르면
www.acmicpc.net
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
문제점
1. 가장 먼저, map을 Integer->String 그리고 String->Integer처럼 2개를 활용하려고 했다
-> 하지만 이 과정에서 새로운 문자열인 tmp를 지정한 뒤, tmp를 다시 isNum함수의 입력값으로 넣는것은 생각 못 함
2. 또한, isNum 함수를 설정하는 것도 까다로웠던 것 같다
-> Character.isDigit 메서드는 존재만 들어보고, 백준 풀이에서 필요했던것은 처음이라 스스로 생각해내지 못했다
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
풀이
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.IOException;
import java.util.*;
public class Main{
public static void main(String[] args) throws IOException{
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String[] inputs = br.readLine().split(" ");
int N = Integer.parseInt(inputs[0]);
int M = Integer.parseInt(inputs[1]);
HashMap<Integer, String> map_int = new HashMap<>();
HashMap<String, Integer> map_str = new HashMap<>();
for(int i=1; i<=N; i++)
{
String name = br.readLine();
map_int.put(i, name);
map_str.put(name, i);
}
StringBuilder sb = new StringBuilder();
for(int i=1; i<=M; i++)
{
String tmp = br.readLine();
if(inNum(tmp))
{
sb.append(map_int.get(Integer.parseInt(tmp))+"\n");
}
else
{
sb.append(map_str.get(tmp)+"\n");
}
}
System.out.println(sb);
}
public static boolean inNum(String str){
for(int i=0; i<str.length(); i++)
{
if(!Character.isDigit(str.charAt(i)))
{
return false;
}
}
return true;
}
}
ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
풀이출처 -> https://velog.io/@yanghl98/백준-1620-나는야-포켓몬-마스터-이다솜-JAVA자바