프로그래머스 Lv.2 - 최댓값과 최솟값

Yuni·2023년 7월 20일
0

Algorithm

목록 보기
11/27
post-thumbnail

문제 설명

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

제한 조건

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

입출력 예

sreturn
"1 2 3 4""1 4"
"-1 -2 -3 -4""-4 -1"
"-1 -1""-1 -1"


접근방법 1(통과)

.split(' ')으로 문자열을 배열형태로 바꿔준 뒤 최댓값 최솟값 변수를 숫자로 변환한 arr[0]의 값으로 삽입한 뒤 for문으로 배열을 돌면서 min보다 arr[i]의 값이 작으면 min을 arr[i]의 값으로 바꿔주고, max보다 arr[i]의 값이 크면 max를 arr[i]의 값으로 바꿔줬다.

  1. s.split(' ')으로 arr배열 선언, max와 min은 parseInt(arr[0])으로 선언한다. (가장 첫번째 값으로 한 뒤 포문을 돌면서 값을 바꿔주기 위함)
  2. for문으로 arr배열을 arr[1]부터 돌면서 삼항연산자로 min보다 parseInt(arr[i])가 작으면 min을 parseInt(arr[i])로, max보다 parseInt(arr[i])가 크면 max를 parseInt(arr[i])로 바꿔준다.
  3. 요구사항에 공백을 추가하라 했으니, min+' '+max 를 리턴한다.

코드

function solution(s) {
    const arr = s.split(' ');
    let max = parseInt(arr[0])
    let min = parseInt(arr[0])
    for(let i=1; i<arr.length; i++) {
        max = max > parseInt(arr[i]) ? max : parseInt(arr[i]);
        min = min < parseInt(arr[i]) ? min : parseInt(arr[i]);
    }
    return min+' '+max;
}


접근방법2 (통과)

접근방법 1의 코드 리턴을 적고있을 때 불현듯 생각난 sort,,, sort를 이용하면 코드가 훨씬 간결해지겠다고 생각했다. sort 오름차순 정렬을 사용하고 arr[0]번째와 신문법 at(-1)을 사용해 arr의 마지막 요소를 리턴하면 끝이잖아?!

  1. s.split(' ')으로 arr배열 선언한 뒤 sort((a,b) => {return a-b}) 으로 오름차순 정렬한다.
  2. 배열의 첫번째 요소인 arr[0](최솟값)과 배열의 마지막 원소 arr.at(-1)(최댓값)을 공백을 포함해 리턴한다.

코드

function solution(s) {
    let arr = s.split(' ');
    arr.sort((a, b) =>  {
      return a - b;
    });
    return arr[0]+' '+arr.at(-1);
}
profile
Look at art, make art, show art and be art. So does as code.

1개의 댓글

comment-user-thumbnail
2023년 7월 20일

글이 많은 도움이 되었습니다, 감사합니다.

답글 달기