whatisthis?

๐Ÿ”บ๋ฐฑ์ค€ 1546 javascript (node.js) ํ’€์ด + ์‹คํ—˜์‹ค๐Ÿงช ๋ณธ๋ฌธ

ALGORITHM/BOJ (Node.js)

๐Ÿ”บ๋ฐฑ์ค€ 1546 javascript (node.js) ํ’€์ด + ์‹คํ—˜์‹ค๐Ÿงช

thisisyjin 2022. 1. 4. 11:38

1์ฐจ์› ๋ฐฐ์—ด - (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);

์ด๊ฒŒ ๋˜๋„ค? (...) ๋” ์ข‹์€ ์ฝ”๋“œ์ธ ๊ฒƒ ๊ฐ™๋‹ค. for๋ฌธ์ด ํ•˜๋‚˜ ์ค„์—ˆ๋‹ค!