문자열 s에는 공백으로 구분된 숫자들이 저장되어 있습니다. str에 나타나는 숫자 중 최소값과 최대값을 찾아 이를 "(최소값) (최대값)"형태의 문자열을 반환하는 함수, solution을 완성하세요.
예를들어 s가 "1 2 3 4"라면 "1 4"를 리턴하고, "-1 -2 -3 -4"라면 "-4 -1"을 리턴하면 됩니다.
s에는 둘 이상의 정수가 공백으로 구분되어 있습니다.
처음에는 이 문제를 보고 split를 써야겠다고 생각을 했고, 그 뒤로는 for문을 돌면서 최대값과 최소값을 돌면 된다고 생각했다. 하지만.. 우리에게는 Math 메소드가 있다는 것! 그래서 두 가지 방법 다 사용해서 풀이를 하고 싶었다.
위와 같이 작성하니 테스트 2에서 실행이 안되었다.
아무래도 음수를 음수로 받아오는 게 아니라 절대값 형태로 숫자를 받아와서 비교하는 것 같다.
그래서 answer에 들어있는 것을 Number를 사용해 숫자로 변경해주니 바로 성공이 뜨는 걸 볼 수 있었다.
function solution(s) {
var answer = s.split(' ');
let max = -100;
let min = 100;
for(let i = 0; i < answer.length; i++){
if(max < Number(answer[i]))
max = Number(answer[i])
if(min > Number(answer[i]))
min = Number(answer[i])
}
return min + " " + max;
}
하지만 Math 메소드를 사용하면 코드양이 반토막이 난다.
코드가 몇 줄 안될 뿐더러, 위에 for문에서 걸리는 시간보다 더 적은 시간이 걸리므로 Math 메소드를 안 쓸 이유가 없다.
function solution(s) {
var answer = s.split(' ');
var max = Math.max(...answer)
var min = Math.min(...answer)
return min + " " + max;
}
+) sort로 풀어도 될 거 같아서 sort로 푼 방법도 남겨본다.
function solution(s) {
var answer = s.split(' ');
answer.sort((a, b) => b -a);
return answer[answer.length-1] + " " + answer[0]
}