반응형
🔺 문제
10816번: 숫자 카드 2
첫째 줄에 상근이가 가지고 있는 숫자 카드의 개수 N(1 ≤ N ≤ 500,000)이 주어진다. 둘째 줄에는 숫자 카드에 적혀있는 정수가 주어진다. 숫자 카드에 적혀있는 수는 -10,000,000보다 크거나 같고, 10,
www.acmicpc.net
🔺 코드
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));
StringBuilder sb = new StringBuilder();
Map<Integer, Integer> map = new HashMap<>();
// 숫자 카드 받기
int N = Integer.parseInt(br.readLine());
// 몇 번 카드가 몇 개 있는지 정보를 Map에 저장
StringTokenizer st = new StringTokenizer(br.readLine()," ");
for(int i = 0 ; i < N ; i++) {
int num = Integer.parseInt(st.nextToken());
map.put(num, map.getOrDefault(num, 0) + 1);
}
int M = Integer.parseInt(br.readLine());
// 몇 개 가지고 있는 숫자 카드인지 구하기
st = new StringTokenizer(br.readLine()," ");
for(int i = 0 ; i < M ; i++) {
int num = Integer.parseInt(st.nextToken());
sb.append(map.getOrDefault(num, 0) + " ");
}
System.out.println(sb.toString().trim());
}
}
✅ 해결 아이디어
-map.put(num, map.getOrDefault(num, 0) + 1)
: 맵에 숫자 num의 개수 몇 개인지 구해서 넣기
-map.getOrDefault(num, 0)
: 맵에서 num값의 value를 출력하고, 이 값이 없으면(=null 값이면) 0으로 설정
🔺 다른 풀이들
[백준] 10816번 : 숫자 카드 2 - JAVA [자바]
https://www.acmicpc.net/problem/10816 10816번: 숫자 카드 2 첫째 줄에 상근이가 가지고 있는 숫자 카드의 개수 N(1 ≤ N ≤ 500,000)이 주어진다. 둘째 줄에는 숫자 카드에 적혀있는 정수가 주어진다. 숫자 카드
st-lab.tistory.com
이분 탐색을 활용한 코드도 작성해 놓으셨다...!! 어렵구나....
💬 느낀 점
맵으로 간단히 풀어서 좋아했는데
이분 탐색으로 풀라고 하면 못 풀 것 같다,,,하하하
(참고)
[java 백준] 실버 4/10816번 숫자카드 2
https://www.acmicpc.net/problem/10816 10816번: 숫자 카드 2 첫째 줄에 상근이가 가지고 있는 숫자 카드의 개수 N(1 ≤ N ≤ 500,000)이 주어진다. 둘째 줄에는 숫자 카드에 적혀있는 정수가 주어진다. 숫자 카드
we1cometomeanings.tistory.com
반응형
'코테 > 백준' 카테고리의 다른 글
[백준/JAVA] 1269번: 대칭 차집합 (0) | 2023.04.10 |
---|---|
[백준/JAVA] 1764번: 듣보잡 (0) | 2023.04.10 |
[백준/JAVA] 19532번: 수학은 비대면강의입니다 (0) | 2023.04.09 |
[백준/JAVA] 1620번: 나는야 포켓몬 마스터 이다솜 (0) | 2023.04.06 |
[백준/JAVA] 7785번: 회사에 있는 사람 (0) | 2023.04.06 |