Dev./coding test
[BaekJoon] 10815 숫자 카드 (node.js)
인쥭
2021. 6. 30. 14:02
반응형
10815번: 숫자 카드
첫째 줄에 상근이가 가지고 있는 숫자 카드의 개수 N(1 ≤ N ≤ 500,000)이 주어진다. 둘째 줄에는 숫자 카드에 적혀있는 정수가 주어진다. 숫자 카드에 적혀있는 수는 -10,000,000보다 크거나 같고, 10,
www.acmicpc.net
// 1.
const fs = require('fs');
const [ , card, , check ] = fs.readFileSync('/dev/stdin').toString().trim().split('\n');
const deck = new Set(card.split(' '));
const targets = check.split(' ');
// 2.
let result = [];
for(const target of targets) {
deck.has(target) ?
result.push(1) :
result.push(0);
};
// 3.
console.log(result.join(' '));
- 구조 분해 할당은 필요 없는 값을 버릴 수 있음을 활용하여 상근이의 카드를 deck, 비교 대상을 targets에 초기화한다.
- Feedback: targets은 어차피 다 돌아야 하므로 굳이 Set을 사용할 필요 없다.
- 비교 대상은 어차피 모두 순회해야하므로 for of문을 사용한다. Set에 값이 있는지 확인하기 위해 has 메소드를 사용한다.
- 결과는 배열 형태로 result에 초기화되어 있으므로, join 메소드를 사용하여 출력 형식을 맞춰준다.
결과
154812 KB / 788 ms
메모
- 처음에는 Set이 아닌 배열과 indexOf를 사용하였으나, 시간초과에 의해 실패하였음.
- 해당 문제와 같이 비교 대상이 너무 많은 경우에는 시간 복잡도가 O(1)인 Set을 사용하는 것이 더 유리하다는 피드백을 반영하였음.