[백준10815_자바스크립트(javascript)] - 숫자 카드

경이·2024년 11월 23일

𝑩𝑶𝑱 (𝒋𝒔)

목록 보기
269/325

🔴 문제

숫자 카드


🟡 Sol

const fs = require('fs');
const path = process.platform === 'linux' ? '/dev/stdin' : 'input.txt';
const [_, cards, __, inputs] = fs
  .readFileSync(path)
  .toString()
  .trim()
  .split('\n')
  .map((it) => it.split(' ').map(Number));
const minus = Array(10000000).fill(0);
const plus = Array(10000001).fill(0);

for (const card of cards) {
  if (card >= 0) plus[card] = 1;
  else minus[card * -1] = 1;
}

let ans = '';
for (const input of inputs) {
  if (input >= 0) ans += plus[input];
  else ans += minus[input * -1];

  ans += ' ';
}

console.log(ans.trim());

🟢 풀이

⏰ 소요한 시간 : -

쉬운 문제처럼 보이지만 범위가 무지 넓기 때문에 set을 사용하면 addhas 로 탐색하는 과정에서 시간이 엄청 소요된다.
따라서 음수와 양수를 나누어 배열의 인덱스로 값을 체크해주는 것이 빠르다.

중요!

  • 탐색해야 할 범위가 넓고 조회만 한다면 배열의 인덱스로 탐색
  • 탐색해야 할 범위가 좁고 삽입/삭제가 빈번하게 일어난다면 Map 객체사용

🔵 Ref

profile
록타르오가르

0개의 댓글