Information Security Study
[백준] 10816: 숫자 카드2 본문
첫 줄에 숫자 카드의 개수(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 |