Java으로 구현한 10816번 숫자 카드 2 문제 풀이입니다.
https://www.acmicpc.net/problem/10816
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.BufferedWriter;
import java.io.OutputStreamWriter;
import java.util.HashMap;
import java.util.Map;
import java.util.StringTokenizer;
public class Main {
public static void main(String[] args) throws Exception {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
StringTokenizer st;
Map<Integer, Integer> map = new HashMap<>();
int n = Integer.parseInt(br.readLine());
st = new StringTokenizer(br.readLine());
for (int i=0; i<n; i++) {
int value = Integer.parseInt(st.nextToken());
map.put(value, map.getOrDefault(value, 0) + 1);
}
int m = Integer.parseInt(br.readLine());
st = new StringTokenizer(br.readLine());
for (int i=0; i<m; i++) {
int key = Integer.parseInt(st.nextToken());
Integer value = map.get(key);
if (value == null)
bw.write(0 + " ");
else
bw.write(value + " ");
}
bw.flush();
bw.close();
br.close();
}
}
1. 해시 맵을 통해 숫자의 개수를 구하여 문제를 해결할 수 있다.
2. n개의 수를 입력받는데, 하나의 수를 입력받을 때마다 해당 수를 해시 맵의 key로 하여 개수(value)를 꺼낸다.
3. 이때 해당 key가 없을 경우 default로 0으로 설정한다.
4. 꺼낸 value 값에 1을 더하여 다시 해시 맵에 저장한다.
5. m개의 수를 입력받는데, 하나의 수를 입력받을 때마다 해당 수를 해시 맵의 key로 하여 개수(value)를 꺼낸다.
6. 만약 그 값이 null일 경우 해당 수가 적혀있는 카드를 갖고 있지 않으므로 bw에 0을 추가하고, 그렇지 않을 경우 그 값을 추가한다.
'백준(JAVA) 풀이 > 자료 구조' 카테고리의 다른 글
백준(JAVA) 1874번 스택 수열 풀이 (0) | 2022.08.21 |
---|---|
백준(JAVA) 9012번 괄호 풀이 (0) | 2022.08.21 |
백준(JAVA) 1026번 보물 풀이 (0) | 2022.08.15 |
백준(JAVA) 1406번 에디터 풀이 (0) | 2022.08.15 |
백준(JAVA) 10866번 덱 풀이 (0) | 2022.08.15 |