반응형
10816번: 숫자 카드 2
첫째 줄에 상근이가 가지고 있는 숫자 카드의 개수 N(1 ≤ N ≤ 500,000)이 주어진다. 둘째 줄에는 숫자 카드에 적혀있는 정수가 주어진다. 숫자 카드에 적혀있는 수는 -10,000,000보다 크거나 같고, 10,
www.acmicpc.net
풀이 )
맵을 사용하는 기본적인 문제이다.
숫자 카드에 들어갈 수 있는 값의 범위가 너무 넓기 때문에 범위만큼의 배열을 선언해서 개수를 기록하는 방법으로는 해결할 수 없다.
입력받는 숫자 카드를 key값으로 하여 해당 key값이 있으면(containsKey) value를 1 올려주고 없으면 key에 1을 넣어준다.
마지막으로 찾는 key 값에 대해서 key값이 있으면 value를, 없으면 0을 출력한다.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.HashMap;
public class Main {
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
StringBuilder sb = new StringBuilder();
String[] in;
int n = Integer.parseInt(br.readLine());
HashMap<Integer, Integer> map = new HashMap<>();
in = br.readLine().split(" ");
for(int i = 0; i < n; ++i){
int key = Integer.parseInt(in[i]);
if(map.containsKey(key))
map.put(key, map.get(key)+1);
else
map.put(key, 1);
}
int m = Integer.parseInt(br.readLine());
in = br.readLine().split(" ");
for(int i = 0; i < m; ++i){
int key = Integer.parseInt(in[i]);
if(map.containsKey(key))
sb.append(map.get(key)).append(' ');
else
sb.append(0).append(' ');
}
System.out.println(sb);
}
}
반응형
'문제풀이 > 백준' 카테고리의 다른 글
[JAVA] 백준 - 1946 : 신입 사원 (0) | 2021.02.17 |
---|---|
[JAVA] 백준 - 10026 : 적록색약 (0) | 2021.02.16 |
[JAVA] 백준 - 2116 : 주사위 쌓기 (0) | 2021.02.15 |
[JAVA] 백준 - 14425 : 문자열 집합 (0) | 2021.02.13 |
[JAVA] 백준 - 13549 : 숨바꼭질3 (0) | 2021.02.13 |