티스토리 뷰
문제
함수 solution은 정수 n을 매개변수로 입력받습니다. n의 각 자릿수를 큰것부터 작은 순으로 정렬한 새로운 정수를 리턴해주세요. 예를들어 n이 118372면 873211을 리턴하면 됩니다.
제한 조건
n은 1이상 8000000000 이하인 자연수입니다.
입출력 예
n return
118372 873211
풀이 과정
더보기
더보기
이번엔 어떻게 접근해야 하는지는 떠올랐으나, 적절한 메서드가 잘 안떠올랐고 알고 있는 메서드(인줄 알았는데 함수였다)도 제대로 사용하기 어려워했다.
//정수 n을 문자열로 바꾸고
//하나씩 떼서 - slice? slice는 배열 메서드라서 안됨
//정렬해서
//다시 붙여서
//숫자로 바꾸기
n차 코드(자잘한 수정을 거친)
function solution(n) {
const num = n
const string = num.toString();
const spread = [...string]; // ["문","자","열"]
const sort = spread.sort((a,b)=>{
return b-a
})
const merge = sort.join('');
const returnNum = Number(merge);
return returnNum;
}
알게 된 것
1. spread operator를 사용하면 문자열도 하나씩 spread 할 수 있다.
2. join 연산자 : 문자열을 하나로 합칠 때 사용한다. ()처럼 아무것도 안 넣으면 쉼표까지 합쳐버려서 ('')빈 문자열을 넣어주었다.
3. Number는 메서드가 아니라 함수다..!
4. 다른 사람의 풀이를 봤는데 메서드 체이닝을 사용할 수 있을 것 같다. 하는 김에 최대한 코드를 리팩토링했다.
+이제 보니까 Number 실수를 전 게시글에서 똑같이 했다. ㅋㅋ!
정답 코드
function solution(n) {
const answer = Number([...n.toString()].sort((a,b)=>{
return b-a
}).join(''))
return answer;
}
더 줄일 수 있는지는 모르겠다.
그리고 이게 가독성이 있나? 싶긴 하다. 다 알고 보면 좀 알 것 같기도 하고 그렇다.
'스파르타 > 알고리즘 코드카타' 카테고리의 다른 글
코딩 테스트 - 나누어 떨어지는 숫자 배열 (0) | 2024.08.22 |
---|---|
코딩 테스트 - 서울에서 김서방 찾기 (0) | 2024.08.21 |
코딩 테스트 - 문자열을 정수로 바꾸기 (0) | 2024.08.15 |
코딩 테스트 - 자연수 뒤집어 배열로 만들기 (0) | 2024.08.14 |
코딩 테스트 - 나머지가 1이 되는 수 찾기 (0) | 2024.08.12 |