Information Security Study

[백준] 10816: 숫자 카드2 본문

Programming/JAVA

[백준] 10816: 숫자 카드2

gayeon_ 2024. 5. 29. 21:45

 

첫 줄에 숫자 카드의 개수(N)를 입력한다.

두 번째 줄에는 N개의 카드 숫자를 입력한다.

 

세 번째 줄에는 카드의 개수를 출력할 M을 입력하고

마지막 줄에는 개수가 궁금한 카드 숫자를 입력한다.

 

마지막 줄에 입력한 카드 숫자의 개수를 순서대로 출력한다.

 

 

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Scanner;
import java.util.Stack;
import java.util.StringTokenizer;

public class Main {
    public static void main(String[] args) throws IOException {
    	
    	Scanner scanner = new Scanner(System.in);
    	
    	// 첫째 줄에 주어지는 N
    	int N = scanner.nextInt();
    	
    	// N개의 정수 A 입력
    	HashMap<Integer, Integer> map = new HashMap<>();
    	for(int i = 0; i < N; i++) {
    		int number = scanner.nextInt();
    		map.put(number, map.getOrDefault(number, 0) + 1);
    	}
    	
    	// 셋째 줄에 주어지는 M
    	int M = scanner.nextInt();
    	
    	// M개의 정수 입력과 존재 여부 확인
    	// 출력하기 위한 변수
    	StringBuilder sb = new StringBuilder();
    	for(int i = 0; i < M; i++) {
    		int number = scanner.nextInt();
    		// 개수 저장용 변수
    		int freq = map.getOrDefault(number, 0);
    		sb.append(freq).append(" ");
    	
    	}
    	
    	System.out.println(sb.toString().trim());
    	
    	scanner.close();
    	
    }
}

 

N개의 정수를 입력받고 이 정수의 개수도 같이 저장하기 위해 HashMap을 사용했다.

HashMap은 <키, 값> 형태로 저장된다.

키: 입력한 정수

값: 입력한 정수의 개수

 

각 입력은 scanner로 받았다.

N개의 정수를 입력받을 때 getOrDefault 메서드를 사용해서 HashMap에서 정수의 개수를 하나씩 늘렸다.

 

그 다음으로 M을 입력받고 개수 저장용 변수인 freq를 선언했다.

freq에 map.getOrDefault(number, 0)으로 number의 개수를 저장하고

출력을 용이하게 하기 위해 StringBuilder에 freq을 저장해 M의 개수를 출력했다.

 

sb.append(freq).append(" "); 에서 마지막 freq값 저장 시 불필요한 공백이 추가되므로

sb 출력 전 trim()으로 문자열 끝의 공백을 제거했다.

'Programming > JAVA' 카테고리의 다른 글

[백준] 1966: 프린터 큐  (0) 2024.06.07
[백준] 11866: 요세푸스 문제 0  (1) 2024.06.05
[백준] 1920: 수 찾기  (0) 2024.05.27
[백준] 2304: 창고 다각형  (0) 2024.05.24
[백준] 2839: 설탕배달 (DP 풀이)  (0) 2024.02.14