최댓값과 최솟값

ChanghyeonO·2023년 11월 10일
0

[level 2] 최댓값과 최솟값 - 12939

문제 링크

성능 요약

메모리: 33.5 MB, 시간: 0.09 ms

구분

코딩테스트 연습 > 연습문제

채점결과

정확성: 100.0
합계: 100.0 / 100.0

제출 일자

2023년 11월 5일 15:4:59

문제 설명

문자열 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"

출처: 프로그래머스 코딩 테스트 연습, https://school.programmers.co.kr/learn/challenges

간만에 코딩테스트 문제를 시작했다. 맨날 에러만 고치고 있다가 자바스크립트 메서드 이용해서 풀이 하려고 하니 깡깡이가 된 느낌이다,,, ㅋㅋㅋㅋㅋ 아래는 내가 작성한 코드.

function solution(s) {
    var answer = [];
    const a = s.split(' ').map(Number).sort((a, b) => a - b);
    
    const b = a.length - 1;

    answer.push(a[0], a[b]);
    
    
    return answer.join(" ");
}

숫자들 사이에 띄어쓰기가 되어있어 split(' ')메서드로 배열로 만들어주면서 띄어쓰기 된 부분을 없애준다. 또한 .map(Number)를 이용해 각 요소를 숫자들로 바꿔주고, sort((a, b) => a - b)메서드를 활용해 낮은 수부터 높은 수로 오름차순 정렬해주었다.
answer.push(a[0], a[b])로 배열에 a와 b를 추가해준뒤 join(" ")메서드로 배열을 풀고 요소 사이에 띄어쓰기를 해서 완성했다.

아래는 스터디원이 작성한 코드.

function solution(s) {
const arr = s.split(" ").map(Number);
return
`${Math.min(...arr)} ${Math.max...arr)}` ;

마찬가지로 split(" ") 메서드로와 map을 돌려서 숫자로 만들어주는 것까지는 같은데, 깔끔하게 Math.min(..arr)로 배열 내에 최솟값과 Math.max(...arr)로 최댓값을 구한 다음 탬플릿 리터럴로 두개를 합쳐주었다.

훨씬 간결한 코드다. 굳어버린 뇌도 녹여줄 겸 매일매일 코딩테스트 문제 하나씩 풀어봐야겠다!

profile
꾸준한 기록을 통해, 좋은 개발자가 되겠습니다.

0개의 댓글