프로그래머스_Javascript :중앙값 구하기

Yoonezi·2023년 5월 16일
0

프로그래머스

목록 보기
3/6
post-thumbnail

처음 작성한 코드는 아래와 같다.

function solution(array) {
    array.sort();
    var size = Math.floor(array.length/2);
    var answer = array[size];
    return answer;
}

코드 실행 했을 땐 통과되었는데 채점을 하니 실패였다.

정답코드:

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

그렇다면 이유는 무엇이었을까?🧐

바로 array.sort(); 요 자식이 문제였다.
array.sort();를 쓰면 배열이 오름차순으로 정렬될거라 단순하게 생각했다.

하지만 내가 써야했던 코드는 arr.sort((a,b) => a-b); 이거였다.


그렇다면 둘의 차이점이 뭐던가 ..?

arr.sort()를 호출할 때 콜백 함수를 전달하지 않으면 기본적으로 배열의 요소들은 문자열로 간주되어 정렬된다.
이 경우 숫자 요소를 가진 배열을 정렬할 때는 원하는 결과를 얻지 못할 수도 있다.

예를 들어, 다음과 같은 배열이 있다고 가정해보자

var arr = [10, 2, 5, 1, 8];

arr.sort()를 호출하면 기본적으로 문자열로 변환된 요소들을 비교하여 정렬하므로 결과는 다음과 같다.

arr.sort(); // [1, 10, 2, 5, 8]

하지만 숫자로 정렬하기 위해서는 콜백 함수를 전달하여 명시적으로 숫자 비교를 수행해야 한다.
따라서, arr.sort((a, b) => a - b);와 같이 콜백 함수 (a, b) => a - b를 전달하여 숫자로 정렬할 수 있다.
이 콜백 함수는 a - b를 반환함으로써 오름차순 정렬을 수행한다.

추가적으로 보고 가면 좋을 듯 싶어서 ..👏🏻

나누기(일반적)

const num = 10 / 3 ;
console.log(num) // 3.3333...

몫 구하기

몫만을 구하고 싶을 땐 나머지를 제거해주는 내림함수 Math.floor() 를 활용한다.
파이썬의 //문법과 헷갈리지 않도록 주의하기

const num = Math.floor(10 / 3) ;
console.log(num) // 3
profile
차곡차곡

0개의 댓글