[백준 10816번 : 숫자 카드2] java 풀이

Elmo·2022년 8월 1일
0

[백준] 알고리즘

목록 보기
20/39

🔔 집합과 맵 - 숫자 카드2

이 문제는 <집합과 맵> 단계라서 보통 맵을 이용하여 푼다.

맵을 이용할 경우

  • HashMap을 이용하여 Key값에 숫자카드를 N개만큼 넣는다.
  • 이 때 getOrDefault를 이용해 중복값이 있으면 value를 증가시킨다.
  • M개 만큼 입력받은 숫자카드를 키값에 넣어 해당하는 Value를 출력한다.

근데 나는 맵이 아닌 배열을 이용하였다.
Counting 정렬에서 Count[]를 증가시키는 방법을 가져와 사용했다.

🔑 java 풀이

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

public class Main{
	public static void main(String[] args) throws IOException{
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		StringBuilder sb = new StringBuilder();
		
		int N=Integer.parseInt(br.readLine());
		int count[]= new int[20000001];
		StringTokenizer st = new StringTokenizer(br.readLine()," ");
		for(int i=0; i<N; i++)
			count[Integer.parseInt(st.nextToken())+10000000]++;
		
		int M=Integer.parseInt(br.readLine());
		int card[]=new int[M];
		st = new StringTokenizer(br.readLine()," ");
		for(int i=0; i<M; i++)
			card[i]=Integer.parseInt(st.nextToken());
		
		for(int i=0; i<M; i++)
			sb.append(count[card[i]+10000000]+" ");
		System.out.print(sb);
		
		br.close();
	}
}

profile
엘모는 즐거워

0개의 댓글