[백준 10816번] 숫자 카드2(Node.js,JavaScript)

박동현·2022년 5월 26일
0

백준문제풀이

목록 보기
8/11
post-thumbnail

출처

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

문제풀이

const input = require("fs").readFileSync("/dev/stdin").toString().trim().split("\n");
const N = Number(input.shift());
const HaveCard = input.shift().split(" ");
const M = Number(input.shift());
const MatchCard = input.shift().split(" ");
var answer = [];
var HaveCardMap = new Map();
for (number of HaveCard) {
  if (HaveCardMap.has(number))
    HaveCardMap.set(number, HaveCardMap.get(number) + 1);
  else HaveCardMap.set(number, 1);
}

for (number of MatchCard) {
  if (HaveCardMap.has(number)) answer.push(HaveCardMap.get(number));
  else answer.push(0);
}

console.log(answer.join(" "));

현재 가지고있는 숫자 카드와 주어진 카드 더미를 비교하여 총 몇 장씩을 보유하고있는지 확인하는 문제

이런 개수를 확인하는 문제는 Map 자료구조를 이용하여 풀면 아주 간단하게 풀이가 가능한것 같다.

Map 을 선언하여 보유하고있는 숫자 카드 더미들을 순회하며 Map에 없는 카드이면 새롭게 추가해 주었고, Map 에 있는 카드라면 해당하는 value값을 1증가시켜 주어 개수를 세었다.

그 후 주어진 카드 더미와 비교하여 있는 카드이면 Map의 value값을, 없는 카드이면 0을 answer에 push 해주는 방식으로 풀었다.

profile
좋은 개발자가 되고싶은 전공자

0개의 댓글