백준 문제풀이 2750번 수 정렬하기

[백준 문제풀이] 2750번 수 정렬하기


2750번 수 정렬하기 (Bronze 1)

문제

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

N개의 수가 주어졌을 때, 이를 오름차순으로 정렬하는 프로그램을 작성하시오.

입력

첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000)이 주어진다. 둘째 줄부터 N개의 줄에는 수 주어진다. 이 수는 절댓값이 1,000보다 작거나 같은 정수이다. 수는 중복되지 않는다.

출력

첫째 줄부터 N개의 줄에 오름차순으로 정렬한 결과를 한 줄에 하나씩 출력한다.

첫번째 풀이

시간 복잡도가 O(n^2)인 풀이라고 해서, sort 메서드를 이용해서 쉽게 풀었다.

첫번째 풀이 소스코드

1
2
3
4
5
6
7
8
9
const fs = require("fs");
let input = fs.readFileSync("/dev/stdin").toString().trim().split("\n");
input = input.map((el) => parseInt(el));

const N = input.shift();

const answerArr = input.sort((a, b) => a - b);

console.log(answerArr.join("\n"));

두번째 풀이

2751번을 풀다가 해당 문제에서는 메서드를 사용하는 것이 아니었다는걸 알고, 다시 버블 정렬로 풀었다.

두번째 풀이 소스코드

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
const fs = require("fs");
let input = fs.readFileSync("/dev/stdin").toString().trim().split("\n");
input = input.map((el) => parseInt(el));

const N = input.shift();

for (let i = 0; i < input.length; i++) {
  let swap;
  for (let j = 0; j < input.length - 1 - i; j++) {
    if (input[j] > input[j + 1]) {
      swap = input[j + 1];
      input[j + 1] = input[j];
      input[j] = swap;
    }
  }
  if (!swap) {
    break;
  }
}

console.log(input.join("\n"));