https://www.acmicpc.net/problem/10816
10816번: 숫자 카드 2
첫째 줄에 상근이가 가지고 있는 숫자 카드의 개수 N(1 ≤ N ≤ 500,000)이 주어진다. 둘째 줄에는 숫자 카드에 적혀있는 정수가 주어진다. 숫자 카드에 적혀있는 수는 -10,000,000보다 크거나 같고, 10,
www.acmicpc.net
문제
풀이
TreeMap 으로 이진탐색을하여 이미 존재하는 숫자면 replace로 기존값 +1
처음 들어오는 숫자면 put을 하여 구성을 한 후 , containkey 함수를 호출하여 각 값을 출력하면된다.
print함수를 사용하면 최악의 경우 50만번 출력을 해서 시간초과가 났었다.
StringBuilder를 사용하여 한번에 출력할 것.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
import java.util.*;
import java.io.*;
public class Main{
public static void main(String[] args) throws IOException {
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));br.readLine();
TreeMap<Integer, Integer> map = new TreeMap<>();
Arrays.stream(br.readLine().split(" ")).mapToInt(Integer::parseInt)
.forEach(e->{
if(map.containsKey(e))
map.replace(e,map.get(e)+1);
else
map.put(e,1);
});br.readLine();
StringBuilder sb = new StringBuilder();
Arrays.stream(br.readLine().split(" ")).mapToInt(Integer::parseInt)
.forEach(e->{
sb.append(map.getOrDefault(e, 0)).append(" ");
});
System.out.println(sb.toString());
}
}
|
cs |
'알고리즘,PS > 백준' 카테고리의 다른 글
[BOJ] 백준 [3273] 두 수의 합 JAVA (0) | 2021.09.08 |
---|---|
[BOJ] 백준 [1654] 랜선 자르기 JAVA (0) | 2021.09.06 |
[BOJ] 백준 [1920] 수찾기 JAVA (0) | 2021.09.06 |
[BOJ] 백준 [1162] 도로포장 JAVA (0) | 2021.09.02 |
[BOJ] 백준 [1916] 최소비용 구하기 JAVA (0) | 2021.09.02 |