[Javascript] LV.0 중앙값 구하기

은비·2023년 9월 2일
1

Programmers_CodingTest

목록 보기
38/72
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입니다.

✍ SOLUTION1

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

/*
내가 처음 작성한 코드이다.

1. array.sort((a, b) => a - b): 이 부분은 주어진 배열 array를 오름차순으로 정렬한다. 
2. return array[Math.floor(array.length/2)]: 이 부분은 정렬된 배열에서 중앙값을 반환한디. 
배열의 길이(array.length)를 2로 나누면 중앙 인덱스가 나오지만, 이 값은 소수점이 될 수 있으므로 
Math.floor() 함수를 사용하여 내림 처리를 해준다. 그 결과로 얻은 인덱스 값을 이용해 배열에서 
해당 위치의 값을 가져와 반환한다.
*/
const solution = (array) => 
    array.sort((a, b) => a - b)[Math.floor(array.length/2)];

/* 위의 코드를 최대한 간단히 한줄로 작성해 보았다. */

✍ SOLUTION2

const solution = (array) => 
	array.sort((a, b) => a - b).at(Math.floor(array.length/2));

/* 
다른 분의 코드를 보다가 at메서드를 사용하여 작성하는 방법도 공부해두면 좋을거 같아서 작성해보았다.

1. array.sort((a, b) => a - b): 이 부분은 주어진 배열 array를 오름차순으로 정렬한다. 
2. at(Math.floor(array.length/2)): 이 부분은 정렬된 배열에서 중앙값을 반환한다. 
at() 메소드는 배열에서 지정된 인덱스에 있는 요소를 반환하는 JavaScript 메소드이다. 
배열의 길이(array.length)를 2로 나누면 중앙 인덱스가 나오지만, 이 값은 소수점이 될 수 있으므로 
Math.floor() 함수를 사용하여 내림 처리를 해준다. 그 결과로 얻은 인덱스 값을 .at() 메소드에 
전달하여 해당 위치의 값을 가져와 반환한다.
*/

출처 : 프로그래머스 스쿨 | 코딩테스트 연습

0개의 댓글