Question
๋ฐฑ์ค 10815๋ฒ : ์ซ์ ์นด๋
์ซ์ ์นด๋๋ ์ ์ ํ๋๊ฐ ์ ํ์ ธ ์๋ ์นด๋์ด๋ค. ์๊ทผ์ด๋ ์ซ์ ์นด๋ N๊ฐ๋ฅผ ๊ฐ์ง๊ณ ์๋ค. ์ ์ M๊ฐ๊ฐ ์ฃผ์ด์ก์ ๋, ์ด ์๊ฐ ์ ํ์๋ ์ซ์ ์นด๋๋ฅผ ์๊ทผ์ด๊ฐ ๊ฐ์ง๊ณ ์๋์ง ์๋์ง๋ฅผ ๊ตฌํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค.
์ ๋ ฅ
์ฒซ์งธ ์ค์ ์๊ทผ์ด๊ฐ ๊ฐ์ง๊ณ ์๋ ์ซ์ ์นด๋์ ๊ฐ์ N(1 ≤ N ≤ 500,000)์ด ์ฃผ์ด์ง๋ค. ๋์งธ ์ค์๋ ์ซ์ ์นด๋์ ์ ํ์๋ ์ ์๊ฐ ์ฃผ์ด์ง๋ค. ์ซ์ ์นด๋์ ์ ํ์๋ ์๋ -10,000,000๋ณด๋ค ํฌ๊ฑฐ๋ ๊ฐ๊ณ , 10,000,000๋ณด๋ค ์๊ฑฐ๋ ๊ฐ๋ค. ๋ ์ซ์ ์นด๋์ ๊ฐ์ ์๊ฐ ์ ํ์๋ ๊ฒฝ์ฐ๋ ์๋ค.
์ ์งธ ์ค์๋ M(1 ≤ M ≤ 500,000)์ด ์ฃผ์ด์ง๋ค. ๋ท์งธ ์ค์๋ ์๊ทผ์ด๊ฐ ๊ฐ์ง๊ณ ์๋ ์ซ์ ์นด๋์ธ์ง ์๋์ง๋ฅผ ๊ตฌํด์ผ ํ M๊ฐ์ ์ ์๊ฐ ์ฃผ์ด์ง๋ฉฐ, ์ด ์๋ ๊ณต๋ฐฑ์ผ๋ก ๊ตฌ๋ถ๋์ด์ ธ ์๋ค. ์ด ์๋ -10,000,000๋ณด๋ค ํฌ๊ฑฐ๋ ๊ฐ๊ณ , 10,000,000๋ณด๋ค ์๊ฑฐ๋ ๊ฐ๋ค
์ถ๋ ฅ
์ฒซ์งธ ์ค์ ์ ๋ ฅ์ผ๋ก ์ฃผ์ด์ง M๊ฐ์ ์์ ๋ํด์, ๊ฐ ์๊ฐ ์ ํ ์ซ์ ์นด๋๋ฅผ ์๊ทผ์ด๊ฐ ๊ฐ์ง๊ณ ์์ผ๋ฉด 1์, ์๋๋ฉด 0์ ๊ณต๋ฐฑ์ผ๋ก ๊ตฌ๋ถํด ์ถ๋ ฅํ๋ค.
์ ๋ ฅ์์
5
6 3 2 10 -10
8
10 9 -5 2 3 4 5 -10
์ถ๋ ฅ์์
1 0 0 1 1 0 0 1
My Code
์ ๋ ฅํด์ ๋ฐ์์จ๊ฐ์ ๊ทธ๋๋ก ๋ฐฐ์ด๋ก ์ ์ฅํด์ ๋ฌธ์ ๋ฅผ ํ์์๋๋ ์ ๋ถ ์๊ฐ์ด๊ณผ๊ฐ ๋ด๋ค!
const fs = require('fs');
const input = fs.readFileSync('dev/stdin').toString().trim().split('\n');
let n = Number(input.shift());
let m = Number(input[1]);
// ์๊ทผ์ด๊ฐ ๊ฐ์ง๊ณ ์๋ ์นด๋
let arr1 = input[0].split(' ').map(Number);
// ์ ์๋ ์นด๋
let arr2 = input[2].split(' ').map(Number);
let answer = [];
for (let i = 0; i < m; i++) {
if (arr1.includes(arr2[i])) {
answer.push(1);
} else {
answer.push(0);
}
}
console.log(answer.join(' '))
WHY?
๋ชจ๋ฅด๊ฒ ๋ค.??????
VScode์์๋ ์๋ง ๋ต์ ํญํญ๋ฑ์ด๋๋จ ๋ง์ด์ง.
์๊ฐ์ด๊ณผ๊ฐ ์ด๋์ ๊ฑธ๋ฆฐ๊ฑธ๊น?
for๋ฌธ์ forEach๋ฌธ์ผ๋ก ๋ฐ๊พธ๊ณ
answer์ ์ ๋ ฅ๋ฐ์๋๋ ๋ฐฐ์ด์ด ์๋ ๋ฌธ์์ด๋ก ๋ฐ์๋ ๋ค ์๊ฐ์ด๊ณผ๊ฐ ๋ด๋ค.
์ด๊ฑด... ๋ด๊ฐ ๋ชจ๋ฅด๋๊ฑฐ์ผ! (ํ์ )
๊ตฌ๊ธ๋ง์ ํด๋ณด๋ set.has๊ฐ array.includes๋ณด๋ค ์๊ฐ์ด ๋ ๊ฑธ๋ฆฌ๋๊ฑธ ์์๋๋ค.
์ญ์ ๋ด๊ฐ ๋ชจ๋ฅด๋ ๊ฑฐ์๋ค.
set์ด๋ผ๋ ๊ฐ์ฒด๋ฅผ ๋๋์ฒด ์ด๋์ ์ฌ์ฉํ๋ ํ๋๋
์๊ฐ์ ๋จ์ถํ๊ธฐ์ํด ์ฌ์ฉํ๋๊ฑธ๊น?
์์ธํ๊ฒ์ ๋ ๊ณต๋ถ๋ฅผ ํด๋ด์ผ๊ฒ ๋ค.
์ ๋ ฅ๋ฐ๋ ๋ฐฐ์ด์ set์ผ๋ก ๋ฐ๊พธ๊ณ ๋ง์๋ค.
const fs = require('fs');
const input = fs.readFileSync('dev/stdin').toString().trim().split('\n');
let n = Number(input[0]);
let m = Number(input[2]);
// ์๊ทผ์ด๊ฐ ๊ฐ์ง๊ณ ์๋ ์นด๋
let arr1 = new Set(input[1].split(' ').map(Number));
// ์ ์๋ ์นด๋
let arr2 = input[3].split(' ').map(Number);
let answer = [];
arr2.forEach((ele) => {
arr1.has(ele) ? answer.push(1) : answer.push(0)
})
console.log(answer.join(' '))
๋ง์์ต๋๋ค!!
HOW? (ํ์ด๋ฐฉ๋ฒ)
- ์๊ทผ์ด๊ฐ ๊ฐ์ง๊ณ ์๋ ์นด๋๋ฅผ Set ๊ฐ์ฒด๋ก ๋ฐ์ ์ ์ฅํ๋ค.
- ์ ์๋ ์นด๋๋ค์ ๊ฐ ์์๊ฐ ์๊ทผ์ด๊ฐ ๊ฐ์ง๊ณ ์๋ ์นด๋์ ๋ฒํธ์ ์ผ์นํ๋ ์ฌ๋ถ์ ๋ฐ๋ผ answer์ 0 ๋๋ 1์ pushํ๋ค.
- ๋ฐฐ์ด์ ๋ฌธ์์ด๋ก ๋ณํํด ์ถ๋ ฅํ๋ค.
Set์ ์ ์๊ณ ์์ด๋ค๋ฉด ์์ฃผ ์ฝ๊ฒ ํ์์ ๋ฌธ์
์ ๋ชจ๋ฅด๋ ์ฌ๋์ด๋ผ๋ฉด ์ด๋ ๊ฒ ๋ ๋ฌธ์ ๐
์๊ฐ์ด๊ณผ ์ด๋ ๊ฒ ๋ง์ด ๋ฐ๋๋ง๋ค
ํน์ ์ ๋ ฅ๋ฐ๋ ๊ณผ์ ์์ ๋ฌธ์ ๊ฐ ์๊ธฐ์ง ์์๋
๋ณ๊ฑฐ๋ณ๊ฑฐ๋ฅผ ๋ค ์ฐพ์๋ณด๊ฒ๋๋ค.
๋ฐฑ์ค ์ ๋ฐ ์๋ฐ์คํฌ๋ฆฝํธ ๋๊ฒ ํด์ฃผ์ญ์ผ!
'Algorithms > Baekjoon' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[JS] ๋ฐฑ์ค 10816๋ฒ : ์ซ์ ์นด๋ 2 (0) | 2022.06.12 |
---|---|
[JS] ๋ฐฑ์ค 7568๋ฒ : ๋ฉ์น (0) | 2022.06.08 |
[JS] ๋ฐฑ์ค 10841๋ฒ : ๋์ด์ ์ ๋ ฌ (0) | 2022.05.28 |
[JS] ๋ฐฑ์ค 1931 ๋ฒ : ํ์์ค ๋ฐฐ์ (feat.๊ทธ๋ฆฌ๋ ์๊ณ ๋ฆฌ์ฆ) (0) | 2022.05.24 |
[JS] ๋ฐฑ์ค 10870๋ฒ : ํผ๋ณด๋์น ์ 5 (0) | 2022.05.16 |