문제 설명
문자열 s에는 공백으로 구분된 숫자들이 저장되어 있습니다. str에 나타나는 숫자 중 최솟값과 최댓값을 찾아 이를 "(최솟값) (최댓값)"형태의 문자열을 반환하는 함수, solution을 완성하세요.
예를 들어 s가 "1 2 3 4"라면 "1 4"를 리턴하고, "-1 -2 -3 -4"라면 "-4 -1"을 리턴하면 됩니다.
- s에는 둘 이상의 정수가 공백으로 구분되어 있습니다.
| "1 2 3 4" | "1 4" |
| "-1 -2 -3 -4" | "-4 -1" |
| "-1 -1" | "-1 -1" |
[풀이 과정]
1. 공백 기준으로 문자열 잘라서 배열화
2. 배열에서 최대, 최소 값 구하기
공백을 기준으로 문자열을 자르면 숫자 -> 문자로 타입의 변화가 일어난다.
여기에 map(Number)를 해주면, 문자열로 변환 되었던 배열이 다시 숫자로 변환된다.
이때까지만 해도 나름 좋은 방법을 생각해서 풀고 있다고 생각했다,,,ㅎㅎ 다른 사람 코드를 보기 전까지
일단 내 방법대로 코드를 작성하면, 아래와 같다.
const solution = () => {
let newArr = s.split(' ').map(Number)
const max = newArr.reduce((a,b) => {
return a > b ? a:b
})
const min = newArr.reduce((a,b) => {
return a > b ? b:a
})
newArr = String(min) +" "+String(max)
return (newArr)
}
새로 만들어진 배열인 newArr에서 최댓값 최솟값을 구해서 반환 값으로 사용해줄 변수에 출력 조건에 맞게 선언 해준 다음 return을 했다. 이렇게 하면 좋은 방법 같진 않은 게 시간이 너무 오래 걸린다,,!!!
🔽

다른 사람 코드를 참고해봤는데 전혀 생각하지 않은 방법이 있어서 또 많이 배웠다,,,,ㅎ 👍✨
function solution(s) {
const arr = s.split(' ');
return Math.min(...arr)+' '+Math.max(...arr);
}
생각을 못했던 부분인데 js는 타입을 따로 지정해주지 않는 언어이기 때문에 Math함수가 문자열에도 적용된다는 점이다.
이 부분을 완전 생각을 못하고 있었다. 위와 같이 코드를 작성하면,

시간도 엄청 빠르고 메모리도 아주 작지만 적게 먹는다,,,!!!! 완전 잘 쓴 코드 같음.
자바스크립트가 엄청 유연한 언어라서 타입 관련해서 복잡해지는 면도 있지만 이런 경우가 있으니까 잘 활용하면 좋기도 한 것 같다. 여하튼 저 코드는 아주 👍✨👍✨
'알고리즘' 카테고리의 다른 글
| [프로그래머스][JS] Lv.1 약수의 개수와 덧셈 (0) | 2022.11.03 |
|---|---|
| [프로그래머스][JS] Lv.1 없는 숫자 더하기 (1) | 2022.10.11 |
| [프로그래머스][JS] Lv.1 나누어 떨어지는 숫자 배열 (1) | 2022.09.23 |
| [프로그래머스][JS] Lv.1 음양 더하기 (0) | 2022.09.22 |
| [프로그래머스][JS] Lv.1 두 정수 사이의 합 (1) | 2022.09.21 |