2차 공부/알고리즘

최댓값과 최소값

공대탈출 2024. 7. 5. 14:30

프로그래머스 - 최댓값과 최소값

띄어쓰기로 각 숫자를 구분한 문자열이 들어올 때 해당 문자열에서 최댓값과 최소값을 리턴하는 문제이다.

 

먼저 작성한 코드

function solution(s) {
    let numArr = s.split(' ').sort((a,b) => a-b)
    let positiveNum = []
    let negativeNum = []
    numArr.map((num) => Number(num)>0 ? positiveNum.push(Number(num)) : negativeNum.push(Number(num)) )
    if (positiveNum.length === 0) {
        return [negativeNum[0], negativeNum[negativeNum.length-1]].join(' ')
    }
    if (negativeNum.length === 0) {
        return [positiveNum[0], positiveNum[positiveNum.length-1]].join(' ')
    }
    return [negativeNum[0], positiveNum[positiveNum.length-1]].join(' ')
}

음수와 양수를 구분하여 한쪽의 길이가 0일때를 예외처리하여 풀이했다. 푸는도중 이럴필요가 있나 싶었다.

 

다음으로 작성한 코드

function solution(s) {
    let numArr = s.split(' ').sort((a,b) => a-b)
    return [numArr[0], numArr[numArr.length-1]].join(' ')
}

문자열인 숫자도 sort메서드에서 정렬가능하기 때문에 굳이 음양을 나눠줄 필요는 없다.

 

마지막으로 작성한 코드

function solution(s) {
    let numArr = s.split(' ')
    return Math.min(...numArr) + ' ' + Math.max(...numArr)
}

Math.min과 Math.max를 사용하면 굳이 sort메서드를 사용해 정렬할 필요가 없어진다.

'2차 공부 > 알고리즘' 카테고리의 다른 글

이진 변환 반복하기  (0) 2024.07.09
JadenCase 문자열 만들기  (0) 2024.07.08
신고 결과 받기  (0) 2024.07.04
공원 산책  (0) 2024.07.03
달리기 경주  (0) 2024.07.02