whatisthis?
โ๋ฐฑ์ค 3052 javascript (node.js) ํ์ด ๋ณธ๋ฌธ
1์ฐจ์ ๋ฐฐ์ด - (4)
๐ก๋ฌธ์
๋ ์์ฐ์ A์ B๊ฐ ์์ ๋, A%B๋ A๋ฅผ B๋ก ๋๋ ๋๋จธ์ง ์ด๋ค. ์๋ฅผ ๋ค์ด, 7, 14, 27, 38์ 3์ผ๋ก ๋๋ ๋๋จธ์ง๋ 1, 2, 0, 2์ด๋ค. ์ 10๊ฐ๋ฅผ ์ ๋ ฅ๋ฐ์ ๋ค, ์ด๋ฅผ 42๋ก ๋๋ ๋๋จธ์ง๋ฅผ ๊ตฌํ๋ค. ๊ทธ ๋ค์ ์๋ก ๋ค๋ฅธ ๊ฐ์ด ๋ช ๊ฐ ์๋์ง ์ถ๋ ฅํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค.
๐์ ๋ ฅ
์ฒซ์งธ ์ค๋ถํฐ ์ด๋ฒ์งธ ์ค ๊น์ง ์ซ์๊ฐ ํ ์ค์ ํ๋์ฉ ์ฃผ์ด์ง๋ค. ์ด ์ซ์๋ 1,000๋ณด๋ค ์๊ฑฐ๋ ๊ฐ๊ณ , ์์ด ์๋ ์ ์์ด๋ค.
๐์ถ๋ ฅ
์ฒซ์งธ ์ค์, 42๋ก ๋๋์์ ๋, ์๋ก ๋ค๋ฅธ ๋๋จธ์ง๊ฐ ๋ช ๊ฐ ์๋์ง ์ถ๋ ฅํ๋ค.
์์ ์ ๋ ฅ
39
40
41
42
43
44
82
83
84
85
์์ ์ถ๋ ฅ
6
๊ฐ ์๋ฅผ 42๋ก ๋๋ ๋๋จธ์ง๋ 39, 40, 41, 0, 1, 2, 40, 41, 0, 1์ด๋ค. ์๋ก ๋ค๋ฅธ ๊ฐ์ 6๊ฐ๊ฐ ์๋ค.
< ์ฝ๋ >
let input = require('fs').readFileSync('/dev/stdin').toString().trim().split('\n').map(x => Number(x));
let numArr = [];
input.forEach(x => {
const num = x % 42;
if(numArr.indexOf(num) === -1) { // ์๋ ๊ฐ์ด๋ผ๋ฉด
numArr.push(num); // ๋ฐฐ์ด์ push
}
});
console.log(numArr.length); // ์๋ก๋ค๋ฅธ ๊ฐ์ด ์ ์ฅ๋ ๋ฐฐ์ด์ด๋ฏ๋ก
<KEY POINT>
- ์๋ก๋ค๋ฅธ ๊ฐ์ ์ฐพ๊ธฐ ์ํด์ ๋ฐฐ์ด(Array)์ ๊ธฐ๋ฅ์ ์ด์ฉํ๋ฉด ํธ๋ฆฌํ๋ค.
- ๋น ๋ฐฐ์ด[] ์ ๋ง๋ค์ด์ฃผ๊ณ , input๋ฐฐ์ด์ ๊ฐ ์์์ ๋ํด ์คํํ๊ธฐ ์ํด์ forEach๋ฅผ ์จ์ค๋ค.
- 42๋ก ๋๋ ๋๋จธ์ง ๊ฐ์ num์ด๋ผ๋ ๋ณ์๋ก ์ ์ฅํ๊ณ , num๊ฐ์ด ์กด์ฌํ์ง ์์ผ๋ฉด pushํ๋ค.
- >> ์ฆ, indexOf(num)์ด -1์ผ๋๋ง pushํ๋ค. -1์ด ์๋๋ผ๋ฉด ์ด๋ฏธ ์กด์ฌํ๋ค๋ ๊ฒ์ด๋ฏ๋ก ์ค๋ณต๋๋๊น.
- numArr์๋ ์ ์์ ๋๋ก๋ผ๋ฉด [39, 40, 41, 0, 1, 2] ์ด ์ฌ์ฏ๊ฐ์ ๊ฐ์ด ์กด์ฌ. - ๋ฐฐ์ด ์์์ ๊ฐ์ length๋ฅผ ์ถ๋ ฅ
๐ก indexOf๋ ๋ฌด์์ผ๊น?
https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Array/indexOf
indexOf() ๋ฉ์๋๋ ๋ฐฐ์ด์์ ์ง์ ๋ ์์๋ฅผ ์ฐพ์ ์ ์๋ ์ฒซ ๋ฒ์งธ ์ธ๋ฑ์ค๋ฅผ ๋ฐํํ๊ณ
์ง์ ๋ ์์๊ฐ ์กด์ฌํ์ง ์์ผ๋ฉด -1์ ๋ฐํ
>> ๋ง์ฝ [a, b, c, d, a, a, a]๋ผ๋ ๋ฐฐ์ด์ indexOf('a')ํ๋ค๋ฉด? >> result | 0
a๊ฐ 4๊ฐ๋ ์กด์ฌํ์ง๋ง, ์ฒซ๋ฒ์งธ ์ธ๋ฑ์ค๋ฅผ ๋ฐํํ๋ ๊ฒ.
>> ๋ง์ฝ, ๋๋ฒ์งธ a๋ฅผ ์ฐพ์ผ๋ ค๋ฉด? indexOf('a', 2)์ ๊ฐ์ด ํด์ค๋ค. >> result | 4
๐ก ์ forEach๋ฅผ ์ฌ์ฉํ์๊น?
forEach์ ํต์ฌ ํค์๋๋ '์ผํ์ฑ'์ด๋ค. map()์ ๊ฒฝ์ฐ์๋ ์๋ก์ด ๋ฐฐ์ด์ ๋ง๋ค์ด๋ฒ๋ฆฌ์ง๋ง,
forEach๋ ๊ทธ๋ฅ ํน์ ๋์์ ํ๊ณ ๋๋๋ค!
์ ์ฝ๋์๋ ๋น ๋ฐฐ์ด์ธ numArr์ pushํ๋ ๋์์ '๊ฐ ์์๋ง๋ค' ํ๊ณ ๋์ forEach๋ฌธ์ ๋์ด ๋ ๊ฒ์ด๋ค.
์์์๋ ํ์ดํ ํจ์๋ฅผ ์ด์ฉํ์ง๋ง, ํ์ดํ ํจ์๋ฅผ ์ด์ฉํ์ง ์๋๋ค๋ฉด ํจ์๋ฅผ ์ ์ธ(ํจ์๋ช ํฌํจ)ํด์ผํ๋ค.
let input = require('fs').readFileSync('/dev/stdin').toString().trim().split('\n').map(x => Number(x));
let numArr = [];
input.forEach(function pushArray(x) {
const num = x % 42;
if(numArr.indexOf(num) === -1) { // ์๋ ๊ฐ์ด๋ผ๋ฉด
numArr.push(num); // ๋ฐฐ์ด์ push
}
});
console.log(numArr.length); // ์๋ก๋ค๋ฅธ ๊ฐ์ด ์ ์ฅ๋ ๋ฐฐ์ด์ด๋ฏ๋ก
์ด๋ฐ์์ผ๋ก ํด์ผํจ. ์ฌ๊ธฐ์, x๋ ์ ๋ ฅ๋ฐ๋ ๊ฐ, ์ฆ ํ๋ผ๋ฏธํฐ(parameter)์ด๋ค!
Parameter | ๋งค๊ฐ๋ณ์ | ํจ์์ ๋ฉ์๋ ์ ๋ ฅ ๋ณ์(Variable) ๋ช |
Argument | ์ ๋ฌ์ธ์, ์ธ์ | ํจ์์ ๋ฉ์๋์ ์ ๋ ฅ ๊ฐ(Value) |
์ด๋ฒ ๋ฌธ์ ์์ ์ค์ ํฌ์ธํธ๋ค์ ๋ํด ์๋ ํฌ์คํ ๋ค์์ ๋ค๋ฃจ๋๋ก ํ๊ฒ ๋ค.
** Array.indexOf()
https://mywebproject.tistory.com/221
** Array.forEach()
https://mywebproject.tistory.com/220
๐ปํ๋ฆฐ ์ฝ๋๋ค๐ป
#1. ํ๋ฆผ
let input = require('fs').readFileSync('/dev/stdin').toString().split('\n').map(x => Number(x));
let count = 0;
for(let i=0;i<10;i++) {
for(let j=i+1;j<10;j++){
if(input[i] % 42 != input[j] % 42) {
count++;
}
}
}
console.log(count);
#2. Type Error
let input = require('fs').readFileSync('/dev/stdin').toString().split('\n').trim().map(x => Number(x));
let count = 0;
for(let i=0;i<10;i++) {
for(let j=i+1;j<10;j++){
if(input[i] % 42 != input[j] % 42) {
count++;
}
}
}
console.log(count);
>> ํน์ ๋ชฐ๋ผ trim()์ ํด์คฌ๋๋ฐ trim()์ toString()๋ค, ์ฆ split ์์ ์จ์ค์ผ ํ๋ค. (๊ณต๋ฐฑ ์์ ๊ณ ๋์ ๋ฐฐ์ด๋ก ๋ง๋ค์ด์ผํจ)
'ALGORITHM > BOJ (Node.js)' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
โโ๋ฐฑ์ค 8958 javascript (node.js) ํ์ด (0) | 2022.01.04 |
---|---|
๐บ๋ฐฑ์ค 1546 javascript (node.js) ํ์ด + ์คํ์ค๐งช (0) | 2022.01.04 |
๐บ๋ฐฑ์ค 2577 javascript (node.js) ํ์ด (0) | 2022.01.04 |
๋ฐฑ์ค 2562 javascript (node.js) ํ์ด (0) | 2022.01.04 |
๋ฐฑ์ค 2562 javascript (node.js) ํ์ด (0) | 2022.01.04 |