| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | |||
| 5 | 6 | 7 | 8 | 9 | 10 | 11 |
| 12 | 13 | 14 | 15 | 16 | 17 | 18 |
| 19 | 20 | 21 | 22 | 23 | 24 | 25 |
| 26 | 27 | 28 | 29 | 30 |
- 백준1026
- 1026 node.js
- 자바스크립트 함수
- 모던자바스크립트
- 21313 nodejs
- 노마드스터디
- 모던자바스크립트DeepDive
- 자바스크립트 딥다이브
- 노개북
- flex box
- 14655 nodejs
- 11047 node.js
- 1541 node.js
- 개인프로젝트
- 2217 node.js
- 자바스크립트 일급객체
- 1789 node.js
- 백준21313
- IT5분잡학사전
- 노마드북클럽
- const
- 모던자바스크립트 딥다이브
- 백준1789
- 백준25176
- CSS flex
- 1931 node.js
- Javascript
- 개발자
- 11399 node.js
- 코딩
- Today
- Total
캐또's coding
4344 - 평균은 넘겠지 - node.js 본문
문제
대학생 새내기들의 90%는 자신이 반에서 평균은 넘는다고 생각한다. 당신은 그들에게 슬픈 진실을 알려줘야 한다.
입력
첫째 줄에는 테스트 케이스의 개수 C가 주어진다.
둘째 줄부터 각 테스트 케이스마다 학생의 수 N(1 ≤ N ≤ 1000, N은 정수)이 첫 수로 주어지고, 이어서 N명의 점수가 주어진다. 점수는 0보다 크거나 같고, 100보다 작거나 같은 정수이다.
출력
각 케이스마다 한 줄씩 평균을 넘는 학생들의 비율을 반올림하여 소수점 셋째 자리까지 출력한다.
예제 입력 1 복사
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
예제 출력 1 복사
40.000%
57.143%
33.333%
66.667%
55.556%
출처
Contest > Waterloo's local Programming Contests > 28 September, 2002 D번
- 문제를 번역한 사람: busyhuman
- 문제의 오타를 찾은 사람: choiking10, eric00513
- 어색한 표현을 찾은 사람: djm03178
알고리즘 분류
첫 번째 줄의 입력으로는 전체 반복할 횟수가 주어진다.
각 테스트 케이스 줄의 첫 번째 값으로는 계산할 숫자들(점수들)의 갯수가 주어진다. 계산할 숫자들의 평균을 구한 뒤, 다시 계산할 숫자들 중에서 평균보다 많은 것이 몇개인지 계산한다. 마지막으로 테스트 케이스 줄의 갯수와 비교해서 비율을 구한다.
const input = require("fs").readFileSync("input.text").toString().trim().split("\n");
const times = Number(input[0]);
for (let i = 1; i < times + 1; i++) {
let arr = input[i].trim().split(" ").map(Number);
let sum = 0;
let aver = 0;
let count = 0;
for (let i = 1; i < arr[0] + 1; i++) {
sum += arr[i];
aver = sum / arr[0];
}
for (let i = 1; i < arr[0] + 1; i++) {
if (arr[i] > aver) {
count++;
}
}
console.log(`${((count / arr[0]) * 100).toFixed(3)}%`);
}
어쨌든 처음 정답으로 나온 결과다. 다른 문법이나 기능을 찾아보기 전에 우선 생각한 것이 그대로 가능한지 작성해보았다. for 안에서 for를 두 개 만들었고 다시 if를 넣었다. 전체 반복하는 안에서 각 줄은 0번 값을 다시 반복값으로 잡고, 안에 있는 숫자들을 모두 더한 뒤 반복값으로 나눠서 평균을 구하게 한다. 다음 반복문에서 다시 똑같은 숫자들을 대상으로 반복문을 돌면서 방금 구한 평균보다 큰 값이 있으면 count에 +1을 해줬다. 최종 값으로 나온 count를 반복값으로 나눈뒤 100을 곱하고 소수점의 특정 자리수까지 나오게 하는 toFixed를 써서 세번째 자리까지 나오게 했다. 출력에는 %까지 나와야 하기 때문에 백틱을 이용해서 출력을 작성했다.
'기초 공부 > 백준 문제 풀이' 카테고리의 다른 글
| 1065 - 한수 - node.js (0) | 2022.08.20 |
|---|---|
| 4673 - 셀프 넘버 - node.js (0) | 2022.08.19 |
| 8958 - OX퀴즈 - node.js (0) | 2022.08.18 |
| 1546 - 평균 - node.js (40번째) (0) | 2022.08.17 |
| 3052 - 나머지 - node.js (0) | 2022.08.17 |