-
[ 프로그래머스 Lv. 2] 최댓값과 최솟값Algorithm 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; }
'Algorithm' 카테고리의 다른 글
[백준/JS] 9012번_괄호 (0) 2023.12.12 [2023 KAKAO BLIND RECRUITMENT] 개인정보 수집 유효기간 (0) 2023.12.12 [ 프로그래머스 Lv. 1] 약수의 개수와 덧셈 (0) 2023.11.06 [프로그래머스 Lv. 1] 수박수박수박수박수박수? (0) 2023.10.31 [프로그래머스 Lv. 1] 가운데 글자 가져오기 (0) 2023.10.28