function solution(n) {
var answer = 0;
}
문제만 봤을때는 입력받은 매개변수를 sort를 사용해서 정렬하면 되겠다! 싶었는데 자꾸 타입에러가 났다ㅠㅠ
sort()를 찾아보니 숫자를 정렬할 때 주의할 점이 있다고 한다.
sort() 메서드가 정렬기능으로 아주 탁월하지만 배열의 요소를 문자열로 판단하기 때문에 타입에러가 난 것이다.
매개변수 n은 정수이므로 number라 오류가 있던 것 같다.
그래서 낸 결론은 입력받은 매개변수를 문자로 바꿔서 배열에 넣어서 정렬하고 다시 숫자화 하기였다! (다른 사람의 풀이 보니 숫자로 푸는게 더 실행속도가 빠르다고 하는걸 보니 굳이 문자열로 안바꿔도 되나보다 ..)
숫자를 배열로 넣어 정렬해서 배열의 요소를 빼내어 이어붙이는 작업을 하기 위해 join()과 split()을 사용했다.
Array.join() : 배열의 모든 요소를 연결해 하나의 문자열로 만든다.
String.split() : 소괄호 내의 기호로 문자열을 나누어 배열로 만든다.
즉, .split()은 문자열을 배열로 나누고, join()은 배열을 문자열로 이어 붙인다고 생각하면 된다.
function solution(n) {
var answer = 0;
answer = (n).toString().split("").sort((a,b)=> b-a).join(""); //string
return +answer; // +를 붙이면 숫자로 바뀜!
}
다른 사람의 풀이를 보니 정말 다양한 방법이 있었다.
- n을 (n + "")로 하면 문자가 된다!
- parseInt, Math.floor 등을 사용하여 숫자형과 문자형을 넘나들며 다양한 방법으로 정수 내림차순이 가능했다.
function solution(str) { }
Math.ceil(str);
Math.floor(str);
Math.round(str);
Math.round(str);
str/1, str*1
+str
~~str
차근차근 알고리즘을 풀면서 자바스크립트를 공부하고 있는데, 숫자형과 문자열을 가지고 만든(장난질 친) 문제가 많아 보인다.
더 고민해보고 직접 풀어보면서 내 것으로 만들고 싶다!! 화이링 🙋