Question
๋ฐฑ์ค 1546๋ฒ : ํ๊ท
์ธ์ค์ด๋ ๊ธฐ๋ง๊ณ ์ฌ๋ฅผ ๋ง์ณค๋ค. ์ธ์ค์ด๋ ์ ์๋ฅผ ์กฐ์ํด์ ์ง์ ๊ฐ์ ธ๊ฐ๊ธฐ๋ก ํ๋ค. ์ผ๋จ ์ธ์ค์ด๋ ์๊ธฐ ์ ์ ์ค์ ์ต๋๊ฐ์ ๊ณจ๋๋ค. ์ด ๊ฐ์ M์ด๋ผ๊ณ ํ๋ค. ๊ทธ๋ฆฌ๊ณ ๋์ ๋ชจ๋ ์ ์๋ฅผ ์ ์/M*100์ผ๋ก ๊ณ ์ณค๋ค.
์๋ฅผ ๋ค์ด, ์ธ์ค์ด์ ์ต๊ณ ์ ์ด 70์ด๊ณ , ์ํ์ ์๊ฐ 50์ด์์ผ๋ฉด ์ํ์ ์๋ 50/70*100์ด ๋์ด 71.43์ ์ด ๋๋ค. ์ธ์ค์ด์ ์ฑ์ ์ ์์ ๋ฐฉ๋ฒ๋๋ก ์๋ก ๊ณ์ฐํ์ ๋, ์๋ก์ด ํ๊ท ์ ๊ตฌํ๋ ํ๋ก๊ทธ๋จ์ ์์ฑํ์์ค.
์ ๋ ฅ์์
3
40 80 60
์ถ๋ ฅ์์
75.0
My Code
let input = require('fs').readFileSync('dev/stdin').toString().trim().split('\n');
let scoreArr = input[1].split(' ').map(Number);
let maxScroe = Math.max(...scoreArr);
let length = Number(input[0]);
let newScoreArr = [];
function makeNewScore() {
for (let i = 0; i < length ; i ++ ) {
newScoreArr.push((scoreArr[i]/maxScroe)*100);
}
const sumValue = newScoreArr.reduce((prev,curr) => prev + curr);
return (sumValue / length).toFixed(2);
}
console.log(makeNewScore());
๋ง์์ต๋๋ค!!
HOW? (ํ์ด๋ฐฉ๋ฒ)
1. ์ ๋ ฅ๋ฐ์ ์ ์๋ฅผ split() ๊ณผ map()์ ์ด์ฉํ์ฌ ์ซ์ ๋ฐฐ์ด๋ก ๋ง๋ ๋ค.
โ2. ๋ฐฐ์ด์ค์ ๊ฐ์ฅ ํฐ ์ต๋๊ฐ์ ๋ณ์ maxScore์ ํ ๋นํ๋ค.
3. ์กฐ์๋ ์ ์๋ฅผ ์ ๋ ฅ๋ฐ์์ฌ ๋ฐฐ์ด newScoreArr๋ฅผ ์ ์ธํ๋ค. (์์ง์ ๋น ๋ฐฐ์ด)
4. for๋ฌธ์ ๋๋ฉด์ ์กฐ์ํ๋ ค๊ณ ํ๋ ๋ฐฉ๋ฒ๋๋ก ๊ณ์ฐ๋ ๊ฒฐ๊ด๊ฐ์ newScoreArr์ push ํ๋ค.
5. reduce()๋ฅผ ์ด์ฉํด ์๋ก์ด ๋ฐฐ์ด์ ์ ์ฅ๋ ์ซ์๋ค์ ํฉ์ ๊ตฌํ๋ค.
reduce() ๋ฉ์๋๋ ๋ฐฐ์ด์ ๊ฐ ์์์ ๋ํด ์ฃผ์ด์ง ๋ฆฌ๋์(reducer) ํจ์๋ฅผ ์คํํ๊ณ , ํ๋์ ๊ฒฐ๊ณผ๊ฐ์ ๋ฐํํฉ๋๋ค.
6. ํ๊ท ์ ๊ตฌํ ๊ฐ์ toFixed๋ฅผ ํตํด ์์์ ๋ ์๋ฆฌ ์ซ์๊น์ง๋ง ๋ํ๋ธ ๊ฐ์ return ํ๋ค.
toFixed() ๋ฉ์๋๋ ์ซ์๋ฅผ ๊ณ ์ ์์์ ํ๊ธฐ๋ฒ(fixed-point notation)์ผ๋ก ํ์ํฉ๋๋ค.
7. ๋ง์ง๋ง์ผ๋ก ํจ์๋ฅผ ์ถ๋ ฅํ๋ฉด ๋
'Algorithms > Baekjoon' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[JS] ๋ฐฑ์ค 2675๋ฒ : ๋ฌธ์์ด ๋ฐ๋ณต (0) | 2022.04.26 |
---|---|
[JS] ๋ฐฑ์ค 1065๋ฒ : ํ์ (0) | 2022.04.23 |
[JS] ๋ฐฑ์ค 3052๋ฒ : ๋๋จธ์ง (0) | 2022.04.20 |
[JS] ๋ฐฑ์ค 2562๋ฒ : ์ต๋๊ฐ (0) | 2022.04.18 |
[JS] ๋ฐฑ์ค 1110๋ฒ : ๋ํ๊ธฐ ์ฌ์ดํด (0) | 2022.04.17 |