ALGORITHM/JavaScript

[코딩테스트] 최댓값과 최솟값

1juyoung 2025. 7. 1. 21:05
문제 설명

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

 

나의 코드 (메모리 & 시간 & 문제 링크와 같은 자세한 정보는 해당 링크를 통해 확인해 주세요! )

function solution(s) {
    var answer = "";
    let numbers = [];
    s = s.split(" ");
    numbers = s.map(num => parseInt(num));
    numbers = numbers.sort((a, b) => a - b);
    answer = answer.concat(numbers[0], " ", numbers[s.length-1])
    return answer.toString();
}
  • 문자열을 공백 기준으로 split함.
  • map + parseInt를 통해 문자열 배열을 숫자 배열로 변환함.
  • sort로 정렬 후 가장 앞과 뒤의 값을 추출함.
  • concat으로 정답 문자열을 구성함.

 

다른 사람의 코드

Math 사용

function solution(s) {
    const arr = s.split(' ');

    return Math.min(...arr)+' '+Math.max(...arr);
}

 

자동으로 문자열이 숫자로 변환되면서 min과 max 함수를 사용할 수 있다는 걸 놓쳤다.
이로 인해 최대값과 최소값을 구하는데 정렬까지 하게 되면서 시간이 낭비되어 버렸다..
뿐만 아니라 concat 보다는 + 연산자를 사용하는게 더 가독성이 좋았을 것 같다...

문제를 단순히 푸는 것에 그치지 않고, 더 나은 방법이 있는지 항상 고민하는 습관을 들여야겠다!
아직 많이 부족한 것 같다 😂