코딩테스트 입문
정수 내림차순으로 배치하기
강민승
2022. 11. 21. 10:49
문제
나의 풀이
첫번째시도
function solution(n) {
return (n + "")
.split("")
.sort(function (a, b) {
return Number(b) - Number(a);
}).join()
}
// "8,7,3,2,1,1"
결과값이 문자열로 정렬이 되어서 바보같이 여기서 멈췄던 게 가장 아까웠다. 어떻게 문자열을 없애서 자연수로 873211을 만들까 생각하다가 결국 다른 방법을 도전.
두번째시도
function solution(n) {
answer = "";
(n + "")
.split("")
.sort(function (a, b) {
return Number(b) - Number(a);
})
.map((data) => {
answer += data;
});
return parseInt(answer)
}
결국 코드가 퇴보하기 시작했다. 머리가 나쁘면 돌아간다고 지금 푼다음에서야 느끼게 된다. 정말 간단한 방법으로 해결할 수 있었던 것인데 너무 아쉬웠다.
간결한 코드
function solution(n) {
return parseInt((n + "")
.split("")
.sort(function (a, b) {
return Number(b) - Number(a);
}).join(""))
}
자 첫번째 시도했던 방법과 다른점을 찾아보시오.
join함수에 ""을 넣으면 문자열로 , , 되어있던 것들을 ""안에 모아주는 것이었는데, 바보같이 그걸 까먹고 퇴보해버렸다.
parseInt로 코드 전체를 묶어서 문자열을 자연수로 바꿔준 후 리턴.