sm 기술 블로그

77. 2108(통계학) 본문

문제/백준_자바스크립트

77. 2108(통계학)

sm_hope 2022. 6. 14. 12:34
let input = require('fs').readFileSync(0).toString().trim().split('\n').map(Number);

N = input[0];
input.shift();
//산술 평균
let avg = input.reduce((a,b)=>(a+b))/N;

if(-1<avg&&avg<0){
    console.log(0);
} 
else {
    console.log(Math.round(avg));
}
//중앙값
let sortedArr = input.sort((a, b) => a - b)
let midNum = input[Math.floor(N/2)];

console.log(midNum);
// 최빈값
let max = 0;
let arr = [];
for(let i = 0 ; i < 8001;i++){
    arr.push(-1);
}
let cnt = 0;
let arr_repo = [];
let find_max = 0;

if(input.length===1){
    console.log(input[0]);
}
else{
    for(let val of input){
       arr[val+4000] += 1;
    }

    for(let i = 0; i < 8001; i++){
        if(arr[i] > find_max){
            arr_repo = [];
            cnt = 0;
            find_max = arr[i];
            max = i - 4000;
            arr_repo.push(max);
            continue;
        }

        if(arr[i] == find_max){
            cnt ++;
            arr_repo.push(i-4000);
            continue;
        }
    }

    if(cnt >= 1){
        console.log(arr_repo.sort((a, b) => a - b)[1]);
    }
    else {
        console.log(max)
    }
}

// 범위
console.log(Math.max(...input)-Math.min(...input));

최대한 자바스크립트에서 제공하는 함수를 사용하지 않고 하고자 했다.

 

로직에 대한 자세한 설명은

https://smhope.tistory.com/219?category=1058420 

 

83. 2108(통계학)

import sys input = sys.stdin.readline N = int(input()) num = sorted([int(input())for _ in range(N)]) # 산술평균 avg = sum(num)/N if -1 < avg < 0: print(0) else: print(round(avg)) # 중앙값 midValue =..

smhope.tistory.com

 

'문제 > 백준_자바스크립트' 카테고리의 다른 글

79. 11650(좌표 정렬하기)  (0) 2022.06.15
78. 1427(소트인사이드)  (0) 2022.06.14
76. 2752 (수 정렬하기2)  (0) 2022.06.13
75. 2750(수 정렬하기)  (0) 2022.06.12
75. 1436(영화감독 숌)  (0) 2022.06.12
Comments