공부공간

BOJ - 1620 ) 나는야 포켓몬 마스터 이다솜 본문

알고리즘/Hash

BOJ - 1620 ) 나는야 포켓몬 마스터 이다솜

개발자가될수있을까? 2020. 1. 23. 22:03

생략..


https://www.acmicpc.net/problem/1620

 

1620번: 나는야 포켓몬 마스터 이다솜

첫째 줄에는 도감에 수록되어 있는 포켓몬의 개수 N이랑 내가 맞춰야 하는 문제의 개수 M이 주어져. N과 M은 1보다 크거나 같고, 100,000보다 작거나 같은 자연수인데, 자연수가 뭔지는 알지? 모르면 물어봐도 괜찮아. 나는 언제든지 질문에 답해줄 준비가 되어있어. 둘째 줄부터 N개의 줄에 포켓몬의 번호가 1번인 포켓몬부터 N번에 해당하는 포켓몬까지 한 줄에 하나씩 입력으로 들어와. 포켓몬의 이름은 모두 영어로만 이루어져있고, 또, 음... 첫 글자만

www.acmicpc.net


 

Java로 문제를 풀다가 Key,Value형식의 자료구조가 있는지 궁금했다.

Java에서는 Map의 인터페이스를 구현한 HashMap을 제공한다( 그외에도 WeakHashMap,TreeMap 등이있다)

즉 순서를 보장하지 않으면서 Key , Value로 자료에 접근하는 구조이다.

 

선언은 

Map<Key , Value> M = new HashMap<>();

으로 하면서 

M.put(key , value) , M.remove(Key)

M.get(key) 등의 방식으로 접근한다.

 

위 문제는 포켓몬에 관한 인덱스와 이름을 Key, Value로 HashMap에 전부 넣고

이 후 M개의 Key가 주어졌을때에 해당하는 값을 리턴해주면된다.

 


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
package practice;
 
 
public class POKETMON {
    
    
    public static void main(String[] args) throws Exception {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        
        String str = br.readLine();
        String str_list[] = str.split(" ");
        int N = Integer.parseInt(str_list[0]);
        int M = Integer.parseInt(str_list[1]);
        
        Map<StringString> m = new HashMap<>();
        
        for(int index = 1 ; index <= N ; index++) {
            String poketmon = br.readLine();
            m.put(poketmon, Integer.toString(index));
            m.put(Integer.toString(index) , poketmon);
        }
        
        for(int index = 1; index <=M ; index++) {
            String Query = br.readLine();
            System.out.println(m.get(Query));
        }
        
        
        
    }
 
}
s


또한 입력시에 

BufferedReader를 사용해보았다.

BufferedReader는 space enter로 구분되는 Scanner와 다르게 

enter로만 구분된다. 그리고 입력값이 대부분 String으로 주어져 적절하게 파싱하는 작업이 필요하다.

Integer.parseint 메소드를 사용하여 스트링을 정수형태로 바꾸어주거나,

 

stringtokenizer를 이용해 공백을 기준으로 tokenize를 진행하여 필요한 요소만 뽑아온다.

 

나는 BufferedReader로 string을 받고 split으로 공백기준으로 잘라와서 하는편.. 

다양한 입력 방법을 습득해야겠다.

'알고리즘 > Hash' 카테고리의 다른 글

BOJ - 4195 ) 친구 네트워크  (0) 2020.07.02
SWEA ) 격자판에 숫자이어붙이기  (0) 2020.02.09
Comments