문자열 s에는 공백으로 구분된 숫자들이 저장되어 있습니다. str에 나타나는 숫자 중 최소값과 최대값을 찾아 이를 "(최소값) (최대값)"형태의 문자열을 반환하는 함수, solution을 완성하세요.
예를들어 s가 "1 2 3 4"라면 "1 4"를 리턴하고, "-1 -2 -3 -4"라면 "-4 -1"을 리턴하면 됩니다.
s | return |
---|---|
"1 2 3 4" | "1 4" |
"-1 -2 -3 -4" | "-4 -1" |
"-1 -1" | "-1 -1" |
const solution = (s) => {
const string = s.split(" ").map(x => +x)
return `${Math.min(...string)} ${Math.max(...string)}`
}
/*
내가 처음 작성한 코드이다.
1. split을 사용하여입력 문자열 s를 공백을 기준으로 하여 부분 문자열의 배열로 나눈다.
2. map 함수를 사용하여 각 부분 문자열을 숫자로 변환한다.
+ 연산자를 사용하여 문자열을 숫자로 변환해준다.
3. 스프레드 연산자를 사용하여 배열의 모든 요소를 Math.min에 개별 인자로 전달하며,
배열에서 가장 작은 숫자를 반환한다.
4. 마찬가지로, Math.max는 배열에서 가장 큰 숫자를 반환한다.
5. 최소값과 최대값을 공백으로 구분하여 포함하는 템플릿 문자열을 반환한다.
*/
const solution = (s) => {
const strSort = s.split(" ").sort((a,b) => a - b);
return `${strSort[0]} ${strSort.at(-1)}`
}
/*
SOLUTION1과는 다르게 인덱스로 접근하는 방식으로 작성해 보았다.
1. 입력 문자열 s를 공백을 기준으로 나누어 각각을 배열의 요소로 만든다.
2. sort 함수를 사용하여 배열의 요소들을 숫자로 변환하고 오름차순으로 정렬한다.
여기서 (a, b) => a - b는 숫자 정렬을 위한 비교 함수이다.
3. 정렬된 배열의 첫 번째 요소, 즉 가장 작은 수를 가져온다.
4. 정렬된 배열의 마지막 요소, 즉 가장 큰 수를 가져온다.
5. at(-1)은 배열의 마지막 요소에 접근해준다.
6. 함수는 가장 작은 수와 가장 큰 수를 공백으로 구분하여 문자열로 반환한다.
*/
const solution = (s) => {
const strSort = s.split(" ").sort((a,b) => a - b);
return `${strSort[0]} ${strSort.pop()}`;
}
/*
SOLUTION2에서 at을 사용하여 마지막 인덱스를 가져왔었는데 이번엔 pop을 사용하여 작성해보았다.
1. 입력 문자열 s를 공백을 기준으로 나누어 각각을 배열의 요소로 만든다.
2. sort 함수를 사용하여 배열의 요소들을 숫자로 변환하고 오름차순으로 정렬한다.
여기서 Number(a) - Number(b)는 문자열을 숫자로 변환한 후 비교하여 정렬하는 함수이다.
3. 정렬된 배열의 첫 번째 요소, 즉 가장 작은 수를 가져온다.
4. pop 함수를 사용하여 정렬된 배열에서 마지막 요소, 즉 가장 큰 수를 제거하고 반환한다.
5. 함수는 가장 작은 수와 가장 큰 수를 공백으로 구분하여 문자열로 반환한다.
*/