드림오구
article thumbnail

 

 

🌊 [javascript] 프로그래머스 - 중앙값 구하기

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

velog.io

💡 중앙값 구하기 - Lv. 0

 

🧡 문제 설명

중앙값은 어떤 주어진 값들을 크기의 순서대로 정렬했을 때 가장 중앙에 위치하는 값을 의미합니다. 예를 들어 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입니다.

💜 나의 풀이

function solution(array) {
    // sort를 사용하여 배열을 순서대로 정렬 한다. 
    // sort만 이용하면 1, 10, 3, ...으로 출력될 수 있으니 
    // .sort(function(a,b){return a-b;} )를 사용한다.
    // 인덱스는 0부터 세기 때문에 배열의 길이 / 2를 내림차순 하면 중앙값이 되므로
    // Math.floor(array.length/2)를 사용한다.
    let answer = 0;
    array.sort(function(a, b){
        return a - b
    });
    return answer = array[Math.floor(array.length/2)]
}

 

🤎 다른사람의 풀이

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

 

🤍 알아보기

.sort((a, b) => a - b)의 원리

sort의 알고리즘은 2개의 인자를 뺄셈하여 양수 값을 전달받으면 배열의 순서를 교체하고,
음수 값을 전달 받으면 순서를 유지하고 최종적으로 배열이 오름차순으로 변경된다.

오름차순 : .sort((a, b) => a - b)
내림차순 : .sort((a, b) => b - a)
자주 쓰게 될테니 기억해둘 것.

출처 : https://noirstar.tistory.com/359
원출처 : https://opentutorials.org/course/50/109

 

🖤 느낀점

화살표 함수 사용에 부담을 느끼지 말자.
쉬운 것도 푸는데 한참 걸렸다. 머릿 속이 복잡한데 차분함을 유지할 것.

profile

드림오구

@드림오구