[프로그래머스-자바스크립트] 중앙값 구하기

호박이와 칼림바·2023년 9월 26일

프로그래머스) Level0

목록 보기
14/25
post-thumbnail

코딩테스트 입문 - 중앙값 구하기 문제


📢 문제 설명

중앙값은 어떤 주어진 값들을 크기의 순서대로 정렬했을 때 가장 중앙에 위치하는 값을 의미합니다. 예를 들어 1, 2, 7, 10, 11의 중앙값은 7입니다. 정수 배열 array가 매개변수로 주어질 때, 중앙값을 return 하도록 solution 함수를 완성해보세요.


⚠️ 제한사항

  • array의 길이는 홀수입니다.
  • 0 < array의 길이 < 100
  • -1,000 < array의 원소 < 1,000

🔶 입출력 예

arrayresult
[1, 2, 7, 10, 11]7
[9, -1, 0]0

🔸입출력 예 설명

입출력 예 #1
본문과 동일합니다.

입출력 예 #2
9, -1, 0을 오름차순 정렬하면 -1, 0, 9이고 가장 중앙에 위치하는 값은 0입니다.


💎 나의 풀이(sort 함수)


function solution(array) {
    array.sort((a, b) => a-b);    
    return array[~~(array.length/2)];
}

처음에 array.sort();로 했을 때는 계속 테스트 케이스에서 실패가 여러개 떴었다. 대체 뭐가 문제인지 한참을 생각하던 중 질문 게시판에서 sort() 함수의 문제였다.

"sort() 함수는 파라미터(compareFunction)가 입력되지 않으면, 유니코드 순서에 따라서 값을 정렬한다"고 하는대 나는 sort()가 기본적 으로 10진수 오름차순으로 정렬하는 건 줄 알았다.

제대로 알고 있자

  • 오름차순: array.sort((a,b) => a-b)
  • 내림차순: array.sort((a,b) => b-a)

💡 다른 사람의 풀이

function solution(array) {
  return array.sort((a, b) => a - b)[Math.floor(array.length / 2)];
}

나랑 거의 같은 코드이지만 이 코드는 정렬과 동시에 가운데 숫자를 return 하였다.

profile
프론트엔드 개발자입니다.

0개의 댓글