하루 알고리즘(JS)

[바미] 소트인사이드

Bami 2024. 4. 26. 07:53
728x90
반응형

문제

https://www.acmicpc.net/problem/1427

 

1427번: 소트인사이드

첫째 줄에 정렬하려고 하는 수 N이 주어진다. N은 1,000,000,000보다 작거나 같은 자연수이다.

www.acmicpc.net

코드

const fs = require('fs');
const input = fs.readFileSync('/dev/stdin').toString().trim();

// 숫자를 문자열로 변환, 배열로 만들기
const digits = input.split('');

// 배열 정렬 (내림차순)
digits.sort((a, b) => b - a);

// 배열을 문자열로 다시 결합
const result = digits.join('');

console.log(result);

코드 설명

split('')을 사용하여 문자열을 한 문자씩 분리하여 배열로 만들어 준 뒤, sort((a, b) => b - a)을 사용하여 sort 함수 안에 비교 함수를 사용하여 자리수를 내림차순으로 정렬합니다.

마지막으로 join()를 사용하여 배열의 요소들을 하나의 문자열로 결합한 후 출력해줍니다.

문제 해설

이 문제는 주어진 수의 각 자리수를 내림차순으로 정렬하는 문제입니다. 

주어진 숫자를 문자열로 변환한 후, 각 문자(숫자)를 배열로 만들어 정렬하고, 다시 문자열로 결합하는 방법을 사용하여 문제를 해결할 수 있습니다.

시간 복잡도

여기선 주로 sort() 함수에 의해 결정되어 일반적으로 O(n log n)가 됩니다.

여기서 n은 숫자의 자릿수입니다.

공간 복잡도

입력 숫자를 저장하고, 이를 문자 배열로 변환하는 데 필요한 공간은 O(n)이 됩니다.

728x90
반응형