sort함수는 정렬 기준을 지정하지 않을 경우 기본적으로
각 요소를 문자열로 변환하고 유니코드 코드 포인트 순서에 따라 정렬한다
이는 숫자를 정렬할 때 우리가 일반적으로 기대하는 방식과 다를 수 있다....
그러니까 [ 1, 2, 3 ] 배열을 arr.sort()로 그냥 돌리면 이때는 문제가 없지만
let arr = [10, 5, 20, 2]; 와 같은 배열을 arr.sort() 함수로 돌리게 되면
[ 10, 2, 20, 5 ] 와 같은 결과를 받아버릴 수 있다
따라서 숫자를 js의 sort함수로 내림차순이나 오름차순을 할 경우에는, 꼭 compare함수를 정의해주어야 한다
arr.sort()돌렸다가 열심히 삽질함..
// readline 모듈보다는 fs를 이용해 파일 전체를 읽어 들여 처리하기
const fs = require('fs')
const getInput = (filePath) => {
return fs
.readFileSync(filePath)
.toString()
.split(/\n/);
}
const input = getInput('test.txt'); // 제출시 여기 '/dev/stdin' 으로 변경
let arr = input[0].split(' ').map(Number);
arr.sort(function(a,b){
return a-b;
});
let answer = "";
for(let i=0;i<arr.length;i++)
{
answer += arr[i] + "a";
}
console.log(answer);
이렇게도 가능
// readline 모듈보다는 fs를 이용해 파일 전체를 읽어 들여 처리하기
const fs = require('fs')
const getInput = (filePath) => {
return fs
.readFileSync(filePath)
.toString()
.split(/\n/);
}
const input = getInput('test.txt'); // 제출시 여기 '/dev/stdin' 으로 변경
let arr = input[0].split(' ').map(Number);
arr.sort(function(a,b){
if(a>b) return 1;
else if(a<b) return -1;
else return 0;
});
let answer = "";
for(let i=0;i<arr.length;i++)
{
answer += arr[i] + " ";
}
console.log(answer);
'알고리즘 > 백준' 카테고리의 다른 글
[백준] js 11650 (0) | 2024.02.12 |
---|---|
[백준] js 11004 (1) | 2024.02.09 |
[백준] js 2750 (1) | 2024.02.09 |
[백준] java 9086 (1) | 2024.01.30 |
[백준] 2562번 최댓값 (0) | 2023.09.05 |