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 보다는 + 연산자를 사용하는게 더 가독성이 좋았을 것 같다...
문제를 단순히 푸는 것에 그치지 않고, 더 나은 방법이 있는지 항상 고민하는 습관을 들여야겠다!
아직 많이 부족한 것 같다 😂