728x90
반응형
최댓값과 최솟값
❓ 문제설명
문자열 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) {
// 내풀이
// 입력값을 모두 돌면서 최솟값과 최댓값을 각각 확인해서 정리한 후 결과 반환
return s.split(' ').reduce((acc, n, idx) => {
const num = parseInt(n)
if (idx === 0) {
acc.push(num)
acc.push(num)
} else {
if (acc[0] > num) acc[0] = num
if (acc[1] < num) acc[1] = num
}
return acc
}, []).join(' ')
/*================================================================*/
// 다른 사람 풀이 확인
// 정렬만 진행한 후 리턴 시 정렬된 값으로 최솟값과 최댓값을 반환
const nums = s.split(' ').sort((a, b) => parseInt(a) - parseInt(b))
return nums[0] + ' ' + nums[nums.length - 1]
}
📝 해설
문자열 s를 공백을 기준으로 분리한 배열(split 사용)을 reduce로 돌면서 최솟값과 최댓값을 각각 확인하여 return 하였다. 이 후 다른사람들의 풀이를 보니 정렬 후 최솟값과 최댓값을 return 하는 것을 알게 되었다.
두 방식 split 처리한 배열을 모두 확인하여 처리하기 때문에 처리시간이 비슷하였으며 메모리 측면에서도 비슷한 것으로 보인다.
📚 참고자료
- https://kimby.tistory.com/84 (String 메소드)
- https://kimby.tistory.com/48 (Array 메소드)
728x90
반응형