스스로짠 코드
function solution(n) {
var answer = 0;
let num = n.toString().split('');
for(let i =0 ; i < num.length; i++)
{
for(let j = 0; j < num.length -1 - i; j++)
{
if(num[j] < num[j + 1])
{
let temp = num[j];
num[j] = num[j+1];
num[j+1] = temp;
}
}
}
answer = Number(num.join(''));
return answer;
}
일단 코드를 스스로 짜면서도 비효율 적이라고 생각하면서 짰다. 문제는 정수n 의 자릿수를 내림차순으로 정렬하는 내용이다. 우선 받아온 데이터 n을 문자열화하여 자릿수대로 나누기위해서 n.toString().split('')을 하였다.
그리고 내림차순을 어떻게 할까 고민하다가 버블정렬을 배웠던 것이 생각이나서, 버블정렬로 하나하나 비교를 하며 내림차순 해주었다. 그리고 해당하는 정보를 answer에 넣어주면 되는데 그전에 num이 현재 문자열 상태이기때문에 따로따로 적용된 문자열을 join으로 하나로 만들어준다음, Number()함수를 이용해서 문자열에서 정수로 바꿔준다음 answer을 return해주었다. 버블정렬이 비효율적일 수 있지만, 생각했을 때의 최선의 수는 버블정렬이었기 때문에 버블정렬을 사용하였다.
다른사람이 짠 코드
function solution(n) {
const newN = n + "";
const newArr = newN
.split("")
.sort()
.reverse()
.join("");
return +newArr;
}
다른사람이 짠 코드이다. n + ""을 하여서 문자열 화를 해주었고(우리는 .toString()을 이용하였다), 해당하는 newN을
.split("")으로 분할하고, .sort()를 통해 오름차순으로 정렬해주고, .reverse()를 통해 오름차순을 뒤집어 내림차순으로 만들고, join("")을 통해 붙여주었다. 그리고 해당한 newArr 앞에 +를 붙여서 정수로 바꿔주었다. 여기서 .sort()와 .reverse()함수를 배웠는데 .sort()를 쓰면 쉽게 오름차순으로 정렬이 된다는 것을 알았고, .reverse()를 쓰면 문자열을 뒤집는다는 것을 배웠다. 확실히 코드를 짤때는 많이 아는것이 도움이 되는 것 같다.
'코딩 > 코딩테스트' 카테고리의 다른 글
[프로그래머스/JS]직사각형 별찍기 (0) | 2024.05.22 |
---|---|
[프로그래머스/JS] 행렬의 덧셈 (0) | 2024.05.21 |
[프로그래머스/JS] 약수의 개수와 덧셈 (0) | 2024.05.17 |
[프로그래머스/JS] 나누어 떨어지는 숫자 배열 (0) | 2024.05.09 |
프로그래머스) 콜라츠 추측 -JS (0) | 2024.05.07 |