Algorithm/JavaScript
[ 프로그래머스 Lv. 2] 최댓값과 최솟값
dbfl9911
2023. 11. 10. 14:25
[ 문제 설명 ]
문자열 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" |
[ 문제 풀이 과정 ]
M1 )
아래는 내 풀이로 실행 결과 정답으로 통과했다. split(' ') 함수를 사용해서 문자열을 ' ' 기준으로 배열요소로 바꿔줬고, 그 후 최솟값은 오름차순 정렬을 한 다음 배열 요소 첫번째 값을, 최댓값은 내림차순 정렬을 한 다음 배열 요소 첫번째 값을 리턴하는 방식으로 풀이했다.
function solution(s) {
var answer;
// 최솟값 = 오름차순 정렬 후 배열 요소 첫번째 값
let min = s.split(' ').sort((a,b) => a-b)[0];
// 최댓값 = 내림차순 정렬 후 배열 요소 첫번째 값
let max = s.split(' ').sort((a,b) => b-a)[0];
answer = min + " " + max
return answer;
}
M2 ) 다른 풀이 방법
다른 분의 풀이를 참고했다.
✔️ 무한대 요소와 배열 요소안의 값을 비교해서 최댓값과 최솟값을 구하는 풀이가 핵심이다.
- Math.max(a,b...) : 배열 요소 중 최대값 리턴
- Math.min(a,b...) : 배열 요소 중 최소값 리턴
- join(' ') : 배열의 모든 요소를 ' ' 으로 연결해 하나의 문자열로 만든다
function solution(s) {
let max = -Infinity;
let min = Infinity;
s.split(' ').map((a) => {
const num = Number(a);
max = Math.max(max, num); // -무한대와 배열 요소안 숫자 비교해 최대값 리턴
min = Math.min(min, num); // +무한대와 배열 요소안 숫자 비교해 최소값 리턴
})
const answer = [String(min), String(max)].join(' ');
return answer;
}