
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을 사용하면 add와 has 로 탐색하는 과정에서 시간이 엄청 소요된다.
따라서 음수와 양수를 나누어 배열의 인덱스로 값을 체크해주는 것이 빠르다.
중요!
Map 객체사용