Notice
Recent Posts
Recent Comments
Link
천리길도 한걸음부터
Day2. 숫자 카드2 본문
백준 링크
https://www.acmicpc.net/problem/10816
기술 요소 설명
- HashMap → 숫자별 개수를 카운트
- getOrDefault → key가 없을 때 0으로 처리
- BufferedReader, StringTokenizer → 빠른 입력
- StringBuilder → 빠른 출력
풀이
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.HashMap;
import java.util.Map;
import java.util.StringTokenizer;
class Day2 {
public static void main(String[] args) throws IOException {
// 1. 입력 받기 위한 준비
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
// 2. 상근이가 가지고 있는 카드 수
int N = Integer.parseInt(br.readLine());
// 3. 공백으로 구분된 상근이 카드의 숫자 한줄 입력받기
StringTokenizer st = new StringTokenizer(br.readLine());
// 4. 비교할 카드 수
int M = Integer.parseInt(br.readLine());
// 5. 비교할 카드 숫자 한줄 입력받기
StringTokenizer st2 = new StringTokenizer(br.readLine());
// 6. 비교해서 일치하는 저장용 해시맵
Map<Integer, Integer> map = new HashMap<>();
// 7. 상근이 카드 숫자 저장
for (int i=0 ;i<N; i++) {
int num = Integer.parseInt(st.nextToken());
map.put(num, map.getOrDefault(num, 0) +1); // num은 숫자 카드의 실제 값 -> key
// 그리고, 처음엔 map 비어있으므로, 상근이 카드 숫자 넣어줌
}
// 출력
StringBuilder sb = new StringBuilder();
// 8. 숫자 카운트 조회
for (int i=0; i<M; i++) {
int target = Integer.parseInt(st2.nextToken());
sb.append(map.getOrDefault(target, 0)).append(" "); // 상근이 카드 숫자랑 비교할 카드 숫자랑 같은지 비교
}
System.out.println(sb);
}
}
'20일 1일 1코테' 카테고리의 다른 글
Day3. 단어 정렬 (0) | 2025.05.03 |
---|---|
Day1. 숫자 정렬 문제 (0) | 2025.05.01 |