알고리즘 공부하며 배운내용
찍먹 vs 부먹
찍먹과 부먹의 선호도는 -1000부터 1000사이 정수로 표현
수가 작을수록 찍먹 선호, 클수록 부먹 선호
친구를 만날 때 마다 지금까지 만났던 친구의 찍먹과 부먹의 선호도의 중앙값만큼 선호
선호도를 출력
들어오는 값
친구 N명의 선호도가 만난 순서대로 입력
예)
10 -10 5 2 -3 -10 2
구하고 싶은 값
2명째 친구부터 선호도를 순서대로 각 줄에 출력
예)
0
5
3
2
0
2
생각
1. 2개부터 정렬을 해서 중간값을 구할 수 있겠다.
2. 최소값, 최대값으로 중앙값을 구할 수 있겠다.
코드
최소값, 최대값 방법으로 풀려고 하다가 미끄러졌다.
정렬 방법을 마구잡이로 만들었다.
// VSCode에서 JavaScript 테스트 하기위한 코드
// 메모장에 테스트 케이스 넣고 sauce.txt로 저장했다
let fs = require('fs')
let input = fs.readFileSync('sauce.txt').toString().split(' ').map(Number)
let len = input.length
let answer = 0
for (let i = 2; i <= len; i++) {
// 매 for loop마다 배열 집어넣는다
let arr = input.slice(0, i).sort((a, b) => a - b)
// 짝수개, 홀수개 일 때 따로나온다
if(i % 2 === 0) {
answer = (arr[arr.length / 2 - 1] + arr[arr.length / 2]) / 2
}
else {
answer = arr[Math.floor(arr.length/2)]
}
// 값이 -이면 반올림 해준다
if(answer < 0) {
answer = Math.round(answer)
}
// 부호 없애려구..
if(answer === - 0)
answer = 0
console.log(Math.floor(answer));
}
'Computer Science > Algorithm :: 알고리즘' 카테고리의 다른 글
알고리즘 :: 백준 2751번 - 수 정렬하기 #JavaScript (0) | 2021.10.01 |
---|---|
알고리즘 :: 백준 2798번 - 변형 블랙잭 #JavaScript (0) | 2021.09.30 |
알고리즘 :: 상대평가, 정렬 조건, 핵심을 보자 (0) | 2021.09.26 |
알고리즘 :: 줄 세우기, 병합정렬 응용 (0) | 2021.09.26 |
알고리즘 :: 마라톤, Merge Sort [푸는중] (0) | 2021.09.26 |