[BOJ] 10816번 숫자 카드 2 - JAVA

최영환·2023년 3월 23일
0

BaekJoon

목록 보기
46/86
post-thumbnail

💡 문제

💬 입출력 예시

📌 풀이(소스코드)

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

import static java.lang.Integer.parseInt;

public class Main {
	static int n, m;
	static Map<Integer, Integer> map = new HashMap<>();
	static StringBuilder result = new StringBuilder();

	public static void main(String[] args) throws Exception {
		BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
		n = parseInt(br.readLine());
		StringTokenizer st = new StringTokenizer(br.readLine(), " ");
		// map 입력(보유중인 수)
		for (int i = 0; i < n; i++) {
			int key = parseInt(st.nextToken());
			map.put(key, map.getOrDefault(key, 0) + 1);	// key 값 1 증가
		}
		m = parseInt(br.readLine());
		st = new StringTokenizer(br.readLine(), " ");
		// 입력받은 key 값 별로 map 출력
		for (int i = 0; i < m; i++) {
			int key = parseInt(st.nextToken());
			result.append(map.getOrDefault(key, 0)).append(" ");
		}
		System.out.println(result);
	}
}

📄 해설

  • 해시맵 자료구조를 사용하면 쉽게 해결이 가능한 문제
  • 아주 간단한 로직을 사용하면 해결됨
    1. N개의 수를 입력받으며 각 수를 키 값으로하여 해시맵에 넣음
      • 이때, 해당 수가 이미 해시맵에 존재하면 그 값을 증가시키고, 아니라면 1로 넣음
    2. M 개의 수를 입력받으며 각 수를 키로하여 해시맵에서 값을 얻어 출력
profile
조금 느릴게요~

0개의 댓글