728x90
반응형
문제
https://www.acmicpc.net/problem/2750
코드
const fs = require('fs');
const input = fs.readFileSync('/dev/stdin').toString().trim().split('\n');
const n = parseInt(input[0], 10);
const numbers = input.slice(1).map(Number); // 첫 번째 줄을 제외하고 숫자로 변환
numbers.sort((a, b) => a - b); // 숫자 오름차순 정렬
let result = '';
numbers.forEach(number => {
result += number + '\n';
});
console.log(result.trim()); // 마지막 줄바꿈을 제거하기 위해 trim() 사용
코드 설명
toString().trim().split('\n')으로 입력을 문자열로 변환 후 줄바꿈 문자를 기준으로 분리한 뒤, map(Number)를 이용해 문자열 배열을 숫자 배열로 변환합니다.
sort((a, b) => a - b)를 사용하여 숫자를 오름차순으로 정렬하게 되는데 이 비교 함수는 a가 b보다 작을 경우 음수를 반환하므로 a를 먼저 배치하게 됩니다.
마지막으로 forEach 루프를 사용해 결과 문자열에 정렬된 숫자를 추가하고, 최종적으로 결과를 출력하게 됩니다.
문제 풀이
이 문제는 주어진 N개의 수를 오름차순으로 정렬하는 간단한 정렬 문제이기 때문에 JavaScript에서는 배열을 사용하여 입력된 수를 저장하고, 배열의 내장 함수를 이용해 쉽게 문제를 풀 수 있어요.
그 중에서 Array.prototype.sort() 메서드를 이용해 배열을 오름차순으로 정렬하였습니다.
시간 복잡도
sort() 메서드의 시간 복잡도는 일반적으로 O(NlogN)입니다. 여기서 N은 배열의 길이를 의미합니다.
공간 복잡도
이 알고리즘은 입력 배열과 같은 크기의 추가 공간을 사용하기 때문에 0(N)의 공간 복잡도를 가집니다.
728x90
반응형
'하루 알고리즘(JS)' 카테고리의 다른 글
[바미] 커트라인 (0) | 2024.04.24 |
---|---|
[바미] 대표값 2 (0) | 2024.04.23 |
[바미] 설탕 배달 다국어 (0) | 2024.04.21 |
[바미] 영화감독 숌 (0) | 2024.04.19 |
[바미] 슬라이딩 윈도우 기법 (0) | 2024.04.18 |