![프로그래머스 자바스크립트 중앙값 구하기](https://img1.daumcdn.net/thumb/R750x0/?scode=mtistory2&fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FwkCFJ%2Fbtr5oMo7XyJ%2FZYAfUwyCEeMP3uOFb1fPKk%2Fimg.png)
- 문제 설명
중앙값은 어떤 주어진 값들을 크기의 순서대로 정렬했을 때 가장 중앙에 위치하는 값을 의미합니다.
예를 들어 1, 2, 7, 10, 11의 중앙값은 7입니다.
정수 배열 array가 매개변수로 주어질 때, 중앙값을 return 하도록 solution 함수를 완성해보세요.
사실 초반에는 입출력 예를 보지 않고 계속 어떻게 풀어야 해결할 수 있을까 고민만 했다.
너무 안 풀려서 입출력으로 시선을 돌렸던게 신의 한수였던... (문제 왜 이렇게 푸니)
일단 주어진 값들을 크기의 순서대로 정렬했다는 말이 문제에 나왔다. 이는 오름차순을 뜻함.
1, 10, 2 이런식으로 1 뒤에 10이 오고, 10 뒤에 2가 오는 error를 방지하기 위하여
sort 고차함수 내부에 콜백함수를 넣기로 하였다.
array.sort((a,b) => a-b);
이렇게 코드를 작성하게 되면 콘솔을 찍었을 때 [1, 2, 3, 4, 5] 이런식으로 배열 안에서 정렬이 된다.
여기까지는 솔직히 입출력을 보지 않고 코드를 짤 수 있었다.
하지만, 정말 중앙에 위치하는 값을 어떻게 구해야 할지는 머리가 전혀 돌아가지 않았다...
이제 입출력 값을 자세히 살펴보기로 하겠다.
두 array의 가운데 값은 7과 0이다.첫 번째 array의 가운데 값인 7은 5개의 아이템들 중 2번 째 index.두 번째 array의 가운데 값인 0은 3개의 아이템들 중 1번 째 index.
이 둘의 공통점을 찾기 위하여 눈을 부릅 뜬 결과,5 / 2 = 2.5;3 / 1 = 1.5;이 두 값을 Math.floor()을 이용하여 소숫점 바닥치기를 하면 결국 2와 1이라는 값이 나옴.
결론 : array의 가운데 값을 구하기 위해서는 [Math.floor(array.length / 2)]를 해주면 됨.그리고 이걸 앞에 오름차순으로 정렬해준 것과 합치면 된다.
function solution(array) {
let answer = 0;
answer = array.sort((a,b) => a-b)[Math.floor(array.length / 2];
return answer;
}
'코딩테스트' 카테고리의 다른 글
프로그래머스 자바스크립트 숨어있는 숫자의 덧셈 (1) (0) | 2023.03.22 |
---|---|
프로그래머스 자바스크립트 모음 제거 (0) | 2023.03.22 |
프로그래머스 자바스크립트 문자열 안에 문자열 (0) | 2023.03.22 |
프로그래머스 자바스크립트 문자 반복 출력하기 (2) | 2023.03.22 |
프로그래머스 자바스크립트 대문자와 소문자 (2) | 2023.03.15 |
github : https://github.com/dnjfht
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!