[프로그래머스] 0단계 중앙값 구하기

hana jeong·2023년 1월 4일
0

문제
문자열 str1, str2가 매개변수로 주어집니다. str1 안에 str2가 있다면 1을 없다면 2를 return하도록 solution 함수를 완성해주세요.

입출력 예
array = [1, 2, 7, 10, 11];
result = 7;

array = [9, -1, 0];
result = 0;

내가 해결한 방법

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

sort메소드를 사용해 오름차순으로 array를 정렬해주고 중앙값을 구해야하니까 array의 length를 2로 나눠주고 math.floor를 이용해서 값을 내림해주었다
예를 들면 입출력 예 2번째에서 array의 length가 3이라 2로 나누면 1.5이다
이걸 math.floor로 내려주어 1로 만드는 것이다

그래서 오름차순으로 정렬한 array를 변수 a에 할당하고, 인덱스에 변수b를 넣어 리턴시켰다
풀어쓰자면 return a[b] == array[index]인 것이다

나는 저렇게 풀어서 썼는데
다른 사람의 풀이를 보니 나처럼 변수에 할당하지 않고 한 번에 리턴시켜 풀었다

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


function solution(array) {

    return array.sort((a, b) => a-b)[Math.trunc(array.length / 2)];

}

math.floor를 사용해도 되지만 math.trunc라는 메소드를 사용하면 더 깔끔하게 풀 수 있었을 거 같다
math.trunc는 소수점을 삭제하고 정수만을 리턴하는 메소드라고 한다
오호 이렇게 하나 또 배운다

profile
https://developer-hh.tistory.com 로 옮깁니다

1개의 댓글

comment-user-thumbnail
2023년 1월 4일

아침 스터디 시간에 푸셨군요! 잘 읽고 갑니당

답글 달기