본문 바로가기

Algorithms

[Algorithms] 백준 10816 숫자카드

반응형

해쉬맵 사용해보려고 풀어봤던 문제

Idea

해쉬맵은 키가 distinct하기 때문에 키별로 value를 +1씩 증가하면서 입력 받음
M배열로 입력받르떼 키값을 찾아 있으면 value를 return, 아니면 0return 하여 코드작성

문제점

시간초과가나서 해쉬맵으로 풀면 안되는줄 알았는데 StringBuilder를 사용해서 풀었더니 해결됨

package boj;

import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.HashMap;
import java.util.StringTokenizer;

public class boj10816_숫자카드2 {

    private static int N;
    private static int[] cardN;
    private static int M;

    public static void main(String[] args) throws Exception{
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        StringBuilder sb = new StringBuilder();
        N = Integer.parseInt(br.readLine());
        HashMap<Integer, Integer> map = new HashMap<Integer, Integer>();
        StringTokenizer st = new StringTokenizer(br.readLine(), " ");
        for(int i =0 ;i<N ;i++) {
            int temp = Integer.parseInt(st.nextToken());
            if(!map.containsKey(temp)) {
                map.put(temp, 1);
            }
            else {
                map.put(temp,map.get(temp)+1);
            }
        }
        M= Integer.parseInt(br.readLine());
        cardN = new int[M];
        st = new StringTokenizer(br.readLine(), " ");
        for(int i =0 ;i<M; i++) {
            int temp2 = Integer.parseInt(st.nextToken());
            if(map.containsKey(temp2)) {
                sb.append( map.get(temp2)+" ");
            }else {
                sb.append( 0+ " ");
            }
        }
        System.out.println(sb.toString());



    }

}
반응형