whatisthis?
๐บ๋ฐฑ์ค 1546 javascript (node.js) ํ์ด + ์คํ์ค๐งช ๋ณธ๋ฌธ
๐บ๋ฐฑ์ค 1546 javascript (node.js) ํ์ด + ์คํ์ค๐งช
thisisyjin 2022. 1. 4. 11:381์ฐจ์ ๋ฐฐ์ด - (5)
๐ก๋ฌธ์
์ธ์ค์ด๋ ๊ธฐ๋ง๊ณ ์ฌ๋ฅผ ๋ง์ณค๋ค. ์ธ์ค์ด๋ ์ ์๋ฅผ ์กฐ์ํด์ ์ง์ ๊ฐ์ ธ๊ฐ๊ธฐ๋ก ํ๋ค. ์ผ๋จ ์ธ์ค์ด๋ ์๊ธฐ ์ ์ ์ค์ ์ต๋๊ฐ์ ๊ณจ๋๋ค. ์ด ๊ฐ์ M์ด๋ผ๊ณ ํ๋ค. ๊ทธ๋ฆฌ๊ณ ๋์ ๋ชจ๋ ์ ์๋ฅผ ์ ์/M*100์ผ๋ก ๊ณ ์ณค๋ค.
์๋ฅผ ๋ค์ด, ์ธ์ค์ด์ ์ต๊ณ ์ ์ด 70์ด๊ณ , ์ํ์ ์๊ฐ 50์ด์์ผ๋ฉด ์ํ์ ์๋ 50/70*100์ด ๋์ด 71.43์ ์ด ๋๋ค.
์ธ์ค์ด์ ์ฑ์ ์ ์์ ๋ฐฉ๋ฒ๋๋ก ์๋ก ๊ณ์ฐํ์ ๋, ์๋ก์ด ํ๊ท ์ ๊ตฌํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค.
๐์ ๋ ฅ
์ฒซ์งธ ์ค์ ์ํ ๋ณธ ๊ณผ๋ชฉ์ ๊ฐ์ N์ด ์ฃผ์ด์ง๋ค. ์ด ๊ฐ์ 1000๋ณด๋ค ์๊ฑฐ๋ ๊ฐ๋ค. ๋์งธ ์ค์ ์ธ์ค์ด์ ํ์ฌ ์ฑ์ ์ด ์ฃผ์ด์ง๋ค. ์ด ๊ฐ์ 100๋ณด๋ค ์๊ฑฐ๋ ๊ฐ์ ์์ด ์๋ ์ ์์ด๊ณ , ์ ์ด๋ ํ๋์ ๊ฐ์ 0๋ณด๋ค ํฌ๋ค.
๐์ถ๋ ฅ
์ฒซ์งธ ์ค์ ์๋ก์ด ํ๊ท ์ ์ถ๋ ฅํ๋ค. ์ค์ ์ ๋ต๊ณผ ์ถ๋ ฅ๊ฐ์ ์ ๋์ค์ฐจ ๋๋ ์๋์ค์ฐจ๊ฐ 10^(-2) ์ดํ์ด๋ฉด ์ ๋ต์ด๋ค.
์์ ์ ๋ ฅ
3
40 80 60
์์ ์ถ๋ ฅ
75.0
< ์ฝ๋ >
let input = require('fs').readFileSync('/dev/stdin').toString().split('\n');
let scoreArr = input[1].split(' ').map(x => Number(x));
let max = 0;
let sum = 0;
let T = Number(input[0])
for(let i=0;i<T;i++) { // ์ต๋๊ฐ ๊ตฌํ๊ธฐ
if(scoreArr[i] > max) {
max = scoreArr[i];
}
}
let changedScore = scoreArr.map(score => score / max * 100);
for(let j=0; j<T ;j++) { // ํฉ ๊ตฌํ๊ธฐ
sum += changedScore[j];
}
console.log(sum / T); // avg = sum / length
<KEY POINT>
- ๊ณผ๋ชฉ์ ์(input[0])์ T๋ก ์ง์ ํ ํ์ i=0๋ถํฐ i<T๊น์ง ๋ฐ๋ณต๋ฌธ > scoreArr[i]๊ฐ max๋ณด๋ค ํฐ์ง ์ฒดํฌ
- max๋ ์ ์์ ์ต์๊ฐ์ด 0์ ์ด๋ฏ๋ก ์ด๊ธฐ๊ฐ์ 0์ผ๋ก ํ๋ค.
- ์ต๋๊ฐ์ ๊ตฌํ๋ค๋ฉด, ์ ์๋ฅผ ๋ฐ๊พธ๊ธฐ ์ํด mapํจ์๋ก ์ฐ์ฐ์ ํด์ค ํ ์๋ก์ด ๋ฐฐ์ด์ ๋ง๋ ๋ค.
- ํ๊ท ์ ๊ตฌํ๊ธฐ ์ํด ๋จผ์ (์ ์๋ฅผ ๋ฐ๊พผ)์ ์๋ค์ ํฉ์ ๊ตฌํ๋ค. >> for loop (j=0๋ถํฐ T๊น์ง)
- ๊ณผ๋ชฉ์ = T์ด๋ฏ๋ก ํฉ / ๊ณผ๋ชฉ์๋ฅผ ํด์ฃผ๋ฉด ํ๊ท ์ ๊ตฌํ ์ ์๋ค.
๐ก๋ค๋ฅธ ์ฝ๋๐ก ์ฌ๊ธฐ๋ก ์ด๋!
- ๊ตณ์ด ์๋ก์ด ๋ฐฐ์ด์ ๋ง๋ค์์ด์ผ ํ๋? (map๋ง๊ณ forEach๋ฅผ ์จ๋ณผ๊น?)
- ํ๊ท ์ ์ ๋ ๊ฒ๋ฐ์ ๋ชป๊ตฌํ ๊น? ์ข๋ ์ฌ์ด ๋ฐฉ๋ฒ ์๋?
๐ป ํ๋ฆฐ ์ฝ๋๐ป
# Type Error
let input = require('fs').readFileSync('/dev/stdin').toString().split('\n').map(x => Number(x));
let scoreArr = input[1].split(' '); // scoreArr = [40, 80, 60]
let max = 0;
let sum = 0;
for(let i=0;i<input[0];i++) { // ์ต๋๊ฐ ๊ตฌํ๊ธฐ
if(scoreArr[i] > max) {
max = scoreArr[i];
}
}
let changedScore = scoreArr.map(score => score / max * 100);
for(let j=0; j<input[0] ;j++) { // ํฉ ๊ตฌํ๊ธฐ
sum += changedScore[j];
}
console.log(sum / input[0]); // avg = sum / length
ํ๋ฆฐ ๋ถ๋ถ : โ โโโ input์ ์ฒ์๋ถํฐ number๋ก ๋ฐ๊พธ๋ฉด scoreArr์ split()ํ ์ ์๋ค. ใฐ split()์ ๋ฐ๋์ String๋ง ๊ฐ๋ฅ
โก ๋๋จธ์ง๋ ๊ทธ๋๋ก ํด๋ ๊ด์ฐฎ์ง๋ง, input[0]์ด ๊ณ์ ๋ฐ๋ณต๋์ด ๋์ค๋ฏ๋ก ๋ณ์ T๋ก ์ ์ฅํ๋ฉด ํธํ๋ค!
๐งช ์คํ์ค ๐ก
1) let changedScore = scoreArr.map(score => score / max * 100); ์์
map()์ด ์๋ forEach()๋ฅผ ์ฌ์ฉํด๋ณด์.
2) ๋ฐฐ์ด ์์๋ค์ ํ๊ท ๊ฐ์ ๊ตฌํ๋ ๋ค๋ฅธ ๋ฐฉ๋ฒ์?
let input = require('fs').readFileSync('/dev/stdin').toString().split('\n');
let scoreArr = input[1].split(' ').map(x => Number(x));
let max = 0;
let sum = 0;
let T = Number(input[0])
for(let i=0;i<T;i++) { // ์ต๋๊ฐ ๊ตฌํ๊ธฐ
if(scoreArr[i] > max) {
max = scoreArr[i];
}
}
let changedScore = scoreArr.forEach(score => {
score = score / max * 100;
sum += score;
});
console.log(sum / T);
'ALGORITHM > BOJ (Node.js)' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๋ฐฑ์ค 4344 javascript (node.js) ํ์ด (0) | 2022.01.04 |
---|---|
โโ๋ฐฑ์ค 8958 javascript (node.js) ํ์ด (0) | 2022.01.04 |
โ๋ฐฑ์ค 3052 javascript (node.js) ํ์ด (0) | 2022.01.04 |
๐บ๋ฐฑ์ค 2577 javascript (node.js) ํ์ด (0) | 2022.01.04 |
๋ฐฑ์ค 2562 javascript (node.js) ํ์ด (0) | 2022.01.04 |