-
[Node.js] 백준 실버5 2751 수 정렬하기2Computer Science/알고리즘 2023. 5. 11. 10:09
https://www.acmicpc.net/problem/2751
2751번: 수 정렬하기 2
첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 수가 주어진다. 이 수는 절댓값이 1,000,000보다 작거나 같은 정수이다. 수는 중복되지 않는다.
www.acmicpc.net
0. 시도
처음 풀었던 방법으로는 버블정렬 알고리즘을 이용하였는데 이렇게 하니까 시간 초과 에러가 났다.
버블 정렬 쓴 코드는 아래와 같다.. temp라는 변수를 하나 만들어서 swip 하는 방식으로 버블 정렬을 사용했다.
const fs = require('fs') const filePath = process.platform === 'linux' ? '/dev/stdin' : './예제.txt'; const input = fs.readFileSync(filePath).toString().trim().split("\n"); const N = input.shift(); let temp = 0; for(let i=0; i<N; i++){ for(let j=0; j<N-1; j++){ if(input[j] > input[j+1]){ temp = input[j]; input[j] = input[j+1]; input[j+1] = temp; } } } for(let i=0; i<N; i++){ console.log(`${input[i]}\n`); }
1. 풀이
sort(), join()이라는 내장함수를 사용하였다. sort()로 쉽게 정렬할 수 있었고, 출력할 때는 join('\n')을 하여 한 줄씩 출력할 수 있었다.
const fs = require('fs') const filePath = process.platform === 'linux' ? '/dev/stdin' : './예제.txt'; const input = fs.readFileSync(filePath).toString().trim().split("\n"); const N = input.shift(); const result = input.sort((a, b) => a - b); console.log(result.join('\n'));
2. 어려웠던 점
출력 형식에 맞지 않는다는 에러 때문에 30분은 이것저것 하면서 시도해 본 것 같다.
기존에 있던 3번째 줄에서 trim()을 쓰지 않아서 났던 에러였다.
수정하니까 문제를 맞출 수 있었다~
const input = fs.readFileSync(filePath).toString().split("\n"); //이전 코드 const input = fs.readFileSync(filePath).toString().trim().split("\n"); //수정한 코드
'Computer Science > 알고리즘' 카테고리의 다른 글
[JS] 알고리즘 문제 풀이 (0) 2023.04.27 [JS] 전화번호 형식의 문자열을 리턴하는 알고리즘 풀이 (0) 2023.04.25 [JS] 직각삼각형인지 판단하는 알고리즘 (0) 2023.04.19 [c] 에라토스테네스의 체로 소수 찾는 프로그램 (0) 2021.09.22 [기초] Map과 HashMap의 차이 (0) 2021.08.02