나의 풀이
let fs = require("fs");
let input = fs.readFileSync('예제.txt').toString().trim().split("\n");
const N = input.shift();
var answer1 = Math.round(input.map(Number).reduce((a,b) => a+b) / N)
console.log(Math.abs(answer1))
var sortArr = input.map(Number).sort((a,b)=> b-a)
var answer2 = sortArr[Math.round(N/2)-1]
console.log (answer2)
let map = new Map()
for(let i = 0; i < N ; i++){
if(map.has(input[i])){
map.set(input[i] , map.get(input[i]) + 1 )
}else{
map.set(input[i] , 1 )
}
}
let maxValue = -Infinity;
let maxKeys = [];
// 모든 [key, value] 쌍을 순회하며 최대값을 찾음
for (let [key, value] of map) {
if (value > maxValue) {
maxValue = value;
maxKeys = [key]; // 새로운 최대값이 나타나면, 배열 초기화 후 키 추가
} else if (value === maxValue) {
maxKeys.push(key); // 동일한 최대값일 경우 키를 추가
}
}
console.log(maxKeys.map(Number).sort((a,b) => a-b)[1] || maxKeys[0])
let maxNum = Math.max(...input.map(Number))
let minNum = Math.min(...input.map(Number))
console.log(maxNum - minNum)
어째서인지 84퍼센트에서 계속 실패했다... 뭐가 문제인지 전혀 예상이가지도않고 찾을수가없었다 ... 반례를 찾다가 평균이 -0으로 출력되는 경우가 있다고해서 , 평균 구하는 식에 if문을 추가해 다시 작성했다.
수정한 풀이
let fs = require("fs");
// 입력 파일 읽어오기
let input = fs.readFileSync('/dev/stdin').toString().trim().split("\n");
const N = parseInt(input.shift()); // 첫 번째 줄에서 N 값 추출
// 1. 평균값 구하기 (소수점 이하 반올림)
let numbers = input.map(Number); // 문자열을 숫자로 변환
let answer1 = Math.round(numbers.reduce((a, b) => a + b) / N);
if(answer1 == -0){
console.log(0)
}else{
console.log(answer1);
}
// 2. 중앙값 구하기 (오름차순 정렬 후 중간 값 출력)
let sortedNumbers = numbers.slice().sort((a, b) => a - b); // 오름차순 정렬
let answer2 = sortedNumbers[Math.floor(N / 2)];
console.log(answer2);
// 3. 최빈값 구하기
let map = new Map();
for (let num of numbers) {
map.set(num, (map.get(num) || 0) + 1); // 각 숫자의 빈도수 계산
}
// 최빈값 찾기
let maxValue = Math.max(...map.values()); // 가장 높은 빈도수
let maxKeys = [...map.entries()]
.filter(([key, value]) => value === maxValue) // 최빈값인 항목들 필터링
.map(([key]) => key)
.sort((a, b) => a - b); // 오름차순 정렬
// 최빈값이 여러 개일 경우 두 번째로 작은 값 출력, 하나면 그 값 그대로 출력
let answer3 = (maxKeys.length > 1) ? maxKeys[1] : maxKeys[0];
console.log(answer3);
// 4. 범위 구하기 (최대값 - 최소값)
let maxNum = Math.max(...numbers);
let minNum = Math.min(...numbers);
console.log(maxNum - minNum);
결과는 성공이였다... 너무 허무했다. 아니 허무라기보단 ... 이런 경우도 있으니 잘 체크를 해야겠다 .
푸하하하
'알고리즘' 카테고리의 다른 글
[BOJ] 25501 - 재귀의 귀재(JS) (0) | 2024.11.05 |
---|---|
[BOJ] 20920 - 영단어 암기는 괴로워(JS) (0) | 2024.10.11 |
[BOJ] 26069 - 붙임성 좋은 총총이(JS) (0) | 2024.10.07 |
[BOJ] 25192 - 인사성 밝은 곰곰이(JS) (0) | 2024.10.04 |
[BOJ] 11050 - 이항계수1(JS) (0) | 2024.09.19 |