티스토리 뷰

반응형
 

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(' '));
  1. 구조 분해 할당은 필요 없는 값을 버릴 수 있음을 활용하여 상근이의 카드를 deck, 비교 대상을 targets에 초기화한다.
    • Feedback: targets은 어차피 다 돌아야 하므로 굳이 Set을 사용할 필요 없다.
  2. 비교 대상은 어차피 모두 순회해야하므로 for of문을 사용한다. Set에 값이 있는지 확인하기 위해 has 메소드를 사용한다.
  3. 결과는 배열 형태로 result에 초기화되어 있으므로, join 메소드를 사용하여 출력 형식을 맞춰준다.

결과

154812 KB / 788 ms

메모

  • 처음에는 Set이 아닌 배열과 indexOf를 사용하였으나, 시간초과에 의해 실패하였음.
  • 해당 문제와 같이 비교 대상이 너무 많은 경우에는 시간 복잡도가 O(1)인 Set을 사용하는 것이 더 유리하다는 피드백을 반영하였음.
댓글
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/02   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28
글 보관함