문제 설명
문자열 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" |
문제를 보고
우선 입력 값을 정렬 한 다음 제일 앞의 값(최소값)과 제일 끝 값(최대값)을 빼네어 푸쉬 해주는 첫 번째 방법과
최소값 최소값을 바로 찾아서 바로 return 에 올바르게 표시하는 것을 생각했는데
두 번째 방법이 더 편했던 것 같다.
입출력 값의 포맷을 유의했어야 했다.
입력 값이 띄어쓰기 구분이 되어 있었고 이를 편하게 하기 위해선 split을 사용하였고
이를 Math.max / min 함수를 사용하여 문제를 풀었다.
1
2
3
4
5
6
7
8
9
10
11
12
|
function solution(s) {
var answer = '';
const splited = s.split(' ')
console.log(splited)
const maxi = Math.max.bind(null,...splited)();
const mini = Math.min.bind(null,...splited)();
// console.log(maxi)
console.log(mini)
return mini + " " + maxi
}
|
cs |
6~7번째 줄은 apply나 call 메소드로도 바꿀 수 있다.
1
2
3
4
5
6
7
8
9
10
|
const maxi = Math.max.bind(null,...splited)();
const mini = Math.min.bind(null,...splited)();
const maxi = Math.max.call(null,...splited);
const mini = Math.min.call(null,...splited);
const maxi = Math.max.apply(null,splited);
const mini = Math.min.apply(null,splited);
|
cs |
차이점은 call()은 함수에 전달된 리스트를 받고, apply() 인수들의 단일 배열을 받는다.
'프로그래머스' 카테고리의 다른 글
5/19[문제풀이] 프로그래머스 Lv2 다음 큰 숫자 (0) | 2021.05.20 |
---|---|
5/18[문제풀이] 프로그래머스 Lv2 괄호 회전하기 (0) | 2021.05.19 |
5/17[문제풀이] 프로그래머스 Lv2 영어 끝말잇기 (0) | 2021.05.17 |
5/14[문제풀이] 프로그래머스 Lv2 짝지어 제거하기 (0) | 2021.05.14 |
5/13[문제풀이] 프로그래머스 Lv2 숫자의 표현 (0) | 2021.05.13 |