코테/백준

[백준/JAVA] 10816번: 숫자 카드 2

imname1am 2023. 4. 10. 00:06
반응형

🔺 문제

 

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

 

반응형