ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [ 프로그래머스 Lv. 2] 최댓값과 최솟값
    Algorithm 2023. 11. 10. 14:25

     

    [ 문제 설명 ]

    문자열 s에는 공백으로 구분된 숫자들이 저장되어 있습니다. str에 나타나는 숫자 중 최소값과 최대값을 찾아 이를 "(최소값) (최대값)"형태의 문자열을 반환하는 함수, solution을 완성하세요.
    예를들어 s가 "1 2 3 4"라면 "1 4"를 리턴하고, "-1 -2 -3 -4"라면 "-4 -1"을 리턴하면 됩니다.

     

    [ 제한 조건 ]

    • s에는 둘 이상의 정수가 공백으로 구분되어 있습니다.

    [ 입출력 예 ]

    s return
    "1 2 3 4" "1 4"
    "-1 -2 -3 -4" "-4 -1"
    "-1 -1" "-1 -1"

    [ 문제 풀이 과정 ]

    M1 ) 

    아래는 내 풀이로 실행 결과 정답으로 통과했다. split(' ') 함수를 사용해서 문자열을 '  ' 기준으로 배열요소로 바꿔줬고, 그 후 최솟값은 오름차순 정렬을 한 다음 배열 요소 첫번째 값을, 최댓값은 내림차순 정렬을 한 다음 배열 요소 첫번째 값을 리턴하는 방식으로 풀이했다. 

    function solution(s) {
        var answer;
        // 최솟값 = 오름차순 정렬 후 배열 요소 첫번째 값
        let min = s.split(' ').sort((a,b) => a-b)[0]; 
        // 최댓값 = 내림차순 정렬 후 배열 요소 첫번째 값
        let max = s.split(' ').sort((a,b) => b-a)[0];
        answer = min + " " + max
        return answer;
    }

     

    M2 ) 다른 풀이 방법

    다른 분의 풀이를 참고했다.

    ✔️ 무한대 요소와 배열 요소안의 값을 비교해서 최댓값과 최솟값을 구하는 풀이가 핵심이다.

    - Math.max(a,b...) : 배열 요소 중 최대값 리턴

    - Math.min(a,b...) : 배열 요소 중 최소값 리턴 

    - join(' ') : 배열의 모든 요소를 '  ' 으로 연결해 하나의 문자열로 만든다 

    function solution(s) {
        let max = -Infinity;
        let min = Infinity;
        
        s.split(' ').map((a) => {
            const num = Number(a);
            max = Math.max(max, num); // -무한대와 배열 요소안 숫자 비교해 최대값 리턴
            min = Math.min(min, num); // +무한대와 배열 요소안 숫자 비교해 최소값 리턴
        })
        
        const answer = [String(min), String(max)].join(' ');
        return answer;
    }

     

Designed by Tistory.