Java/Java 알고리즘

백준 10816번 숫자카드 JAVA 구현해보기

kimc 2022. 6. 19. 10:32

```

백준 10816번 숫자카드 JAVA 구현해보기

```

이번 글을 통해 배워갈 내용

  1. 백준 10816번 풀이

https://www.acmicpc.net/problem/10816

 

10816번: 숫자 카드 2

첫째 줄에 상근이가 가지고 있는 숫자 카드의 개수 N(1 ≤ N ≤ 500,000)이 주어진다. 둘째 줄에는 숫자 카드에 적혀있는 정수가 주어진다. 숫자 카드에 적혀있는 수는 -10,000,000보다 크거나 같고, 10,

www.acmicpc.net

 

백준 10816번 숫자카드는

난이도 실버 등급의 문제로서

 

숫자카드의 개수

숫자카드에 적힌 숫자들이 주어지고

 

찾을 카드의 개수

각 카드의 숫자가 주어지면

해당되는 카드의 개수를 출력해주면 되는 문제입니다.

 

예를 들어 1이 적힌 카드가 10개 2가 적힌 카드가 5개이고

1 2를 입력받으면

10 5 이렇게 출력해주면 됩니다.

 


30분 정도 위에 링크를 방문하셔서 풀어보시고

안 풀리시는 경우에만 아래 해답을 봐주시면 감사하겠습니다.


입력을 받고

cardSize와 coomandSize는 사용하지 않았습니다.

 

cards를 통해 cardMap에 해당되는 카드들의 정보를 업데이트하고

 

commands를 통해 cardMap을 호출하고 없는 카드면 getOrDefault를 이용해 0을 출력했습니다.

 

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;

public class Main {

    public static void main(String[] args) throws IOException {

        // BufferedReader Object 생성
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        // 입력
        final int cardSize = Integer.parseInt(br.readLine());
        List<Integer> cards = Arrays.stream(br.readLine().split(" ")).map(Integer::parseInt).collect(Collectors.toList());
        final int commandSize = Integer.parseInt(br.readLine());
        List<Integer> commands = Arrays.stream(br.readLine().split(" ")).map(Integer::parseInt).collect(Collectors.toList());

        // 연산 및 출력
        System.out.print(solution(cards, commands));
    }

    private static String solution(List<Integer> cards, List<Integer> commands) {
        Map<Integer, Integer> cardMap = new HashMap<>();

        cards.forEach(card -> cardMap.put(card, cardMap.getOrDefault(card, 0) + 1));

        StringBuilder sb = new StringBuilder();

        commands.forEach(num -> sb.append(cardMap.getOrDefault(num, 0)).append(" "));

        sb.setLength(sb.length() - 1);

        return sb.toString();
    }
}

 

 

읽어주셔서 감사합니다

 

무엇인가 얻어가셨기를 바라며

 

오늘도 즐거운 코딩 하시길 바랍니다 ~ :)

 


 

728x90