1.첫번째 아이디어
먼저 입력을 받아 배열에 저장하고
String에 '0'~'100000' 을 빼서 숫자이면 배열에서 그 데이터값을 가지고오고 이름이면 그 배열에서 숫자를 가지고온다.
2.두번째 아이디어
먼저 입력받은 도감을 해쉬맵에 저장하고 그 해쉬맵에서 키값과 밸류값으로 검색한 후에 해당하는 밸류 값과 키값을 출력하는 방법
1. 첫번째 아이디어에서 생각하지 못한 점은 출력 시간을 생각 하지 않았다 O(N^2) 시간이 걸림으로 통과 못하는 방법
-> IM 시험을 볼때도 그렇고 항상 먼저 시간을 확인하고 가능한지 먼저 확인하자.
2. 해쉬맵에 대한 공부가 완벽히 되어 있지 않아서 다시 검색하고 풀어야 했다. 너무 얕게 알고 있었던것 같다 해쉬맵의 경우 키값으로 밸류값을 찾을순 있지만 밸류값으로 키값을 찾기 위해서 탐색 작업을 해주어야한다. 이 문제를 해결 하기 위해서 두개의 해쉬맵을 사용했다.
탐색 방법에
package com.study26;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.StringTokenizer;
public class backjoon_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());
String[] dogam= new String[N+1];
for (int i = 1; i <=N; i++) {
st = new StringTokenizer(br.readLine());
dogam[i]= st.nextToken();
}
for (int i = 0; i < N; i++) {
st = new StringTokenizer(br.readLine());
String temp = st.nextToken();
//숫자면
if(temp.charAt(0)>='1'&&temp.charAt(0)<='9')
{
int S = Integer.parseInt(temp);
System.out.println(dogam[S]);
}
else {
for (int j = 0; j < dogam.length; j++) {
if(temp.equals(dogam[j])) {
System.out.println(j);
}
}
}
}
}
}
package com.study26;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.HashMap;
import java.util.StringTokenizer;
public class backjoon_1620_나는야포켓몬마스터이다솜 {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter wr = new BufferedWriter(new OutputStreamWriter(System.out));
StringTokenizer st = new StringTokenizer(br.readLine()," ");
int N = Integer.parseInt(st.nextToken());
int M = Integer.parseInt(st.nextToken());
String[] dogam= new String[N+1];
HashMap<Integer,String> map = new HashMap<>();
HashMap<String,Integer> map2 = new HashMap<>();
for (int i = 1; i <=N; i++) {
st = new StringTokenizer(br.readLine());
String temp = st.nextToken();
map.put(i, temp);
map2.put(temp,i);
}
for (int i = 0; i <M; i++) {
st = new StringTokenizer(br.readLine());
String temp = st.nextToken();
//숫자면
if(temp.charAt(0)>='1'&&temp.charAt(0)<='9')
{
int S = Integer.parseInt(temp);
//System.out.println(dogam[S]);
wr.write(map.get(S)+"\n");
wr.flush();
}
else {
//System.out.println(j);
wr.write(map2.get(temp)+"\n");
wr.flush();
}
}
wr.close();
}
}