728x90

Code

😢 5분 정도 고민하고, 코드로 하나씩 정리해 나가면서 금방 풀 수 있었던 문제
😊 전체 Test Case를 반복할 수 있는 for loop을 가장 바깥에서 돌리고, 중첩 첫 번째 for loop에서 점수를 모두 더해준 후 평균을 구한다. 그리고 중첩 두 번째 for loop에서 평균보다 높은 인원수를 구하고 비율을 계산해주고 출력한다.
평균을 어떻게 구할지, 평균을 넘는 인원은 몇명인지, 비율을 구하는 공식은 무엇인지 먼저 정리하고 풀어나가면 금방 해결할 수 있다.
Full Code
| // 1st Solution |
| // For submit |
| // const fs = require('fs'); |
| // const input = fs.readFileSync('/dev/stdin').toString().trim().split('\n'); |
| // For local test |
| const input = [ |
| '5', |
| '5 50 50 70 80 100', |
| '7 100 95 90 80 70 60 50', |
| '3 70 90 80', |
| '3 70 90 81', |
| '9 100 99 98 97 96 95 94 93 91' |
| ]; |
| const C = parseInt(input[0]); |
| for (let i = 1; i <= C; i++) { |
| const NAndGradeArr = input[i].trim().split(' '); |
| let totalGrade = 0; |
| let avg = 0; |
| let counter = 0; |
| let proportion = 0; |
| for (let j = 1; j <= parseInt(NAndGradeArr[0]); j++) { |
| totalGrade += parseInt(NAndGradeArr[j]); |
| } |
| avg = totalGrade / parseInt(NAndGradeArr[0]); |
| for (let k = 1; k <= parseInt(NAndGradeArr[0]); k++) { |
| if (parseInt(NAndGradeArr[k]) > avg) { |
| counter++; |
| } |
| } |
| proportion = (counter / parseInt(NAndGradeArr[0])) * 100; |
| console.log(proportion.toFixed(3) + '%'); |
| } |
| // 비율 구하는 공식 : 비교량 / 기준량 * 100 (2 / 5 * 100) |
| // other solution (좀 특이해서 참고해보았다) |
| // var a = require('fs') |
| // .readFileSync('/dev/stdin') |
| // .toString() |
| // .match(/[^\r\n]+/g) |
| // .slice(1), |
| // b = a.map(function(x) { |
| // return x.split(' '); |
| // }), |
| // c = [], |
| // e = []; |
| // for (var i = 0; i <= b.length - 1; i++) { |
| // c.push( |
| // b[i].reduce(function(pre, cur) { |
| // return parseInt(pre) + parseInt(cur); |
| // }) / |
| // b[i][0] - |
| // 1 |
| // ); |
| // e.push( |
| // b[i].slice(1).filter(function(x) { |
| // return x > c[i]; |
| // }) |
| // ); |
| // console.log(((e[i].length / b[i][0]) * 100).toFixed(3) + '%'); |
| // } |
'Algorithm > JavaScript(Node.js)' 카테고리의 다른 글
| 백준 4673번: 셀프 넘버(Self Number) Node.js(JavaScript) [수정 및추가] (0) | 2019.12.29 |
|---|---|
| Chunk(size만큼 sub array 잘라 넣기) Node.js(JavaScript) (0) | 2019.12.29 |
| Anagrams(철자 순서를 바꾼 말) Node.js(JavaScript) (0) | 2019.12.28 |
| 백준 8958번: OX 퀴즈(OX Quiz) Node.js(JavaScript) (0) | 2019.12.27 |
| The Classic FizzBuzz(3의 배수와 5의 배수 찾기) Node.js(JavaScript) (0) | 2019.12.27 |