정렬 211014
문제
N개의 수가 주어졌을 때, 이를 오름차순으로 정렬하는 프로그램을 작성하시오.
입력
첫째 줄에 수의 개수 N(1 ≤ N ≤ 1,000,000)이 주어진다. 둘째 줄부터 N개의 줄에는 수가 주어진다. 이 수는 절댓값이 1,000,000보다 작거나 같은 정수이다. 수는 중복되지 않는다.
출력
첫째 줄부터 N개의 줄에 오름차순으로 정렬한 결과를 한 줄에 하나씩 출력한다.
예제 입력 1
5
5
4
3
2
1
Plain Text
복사
예제 출력 1
1
2
3
4
5
Plain Text
복사
My solution
이 문제는 정답률이 29퍼센트인데 sort 빌트인 메서드가 배열 내의 숫자를 비교할 때 아스키코드로 비교되기 때문에 일의 자리수를 넘어가면 사전순으로 "10"이 "2"보다 더 앞에 위치하게 된다는 사실을 알면 된다.
따라서 아래와 같은 compareFunction을 콜백함수로 넘겨준다.
소스코드
function solution(i) {
const input = i.toString().trim().split("\n");
input.shift();
input.sort((a, b) => a - b);
console.log(input.join("\n"));
return input.join("\n");
}
test("solution", () => {
expect(solution("5\n5\n4\n3\n2\n1")).toStrictEqual("1\n2\n3\n4\n5");
expect(solution("5\n-5\n-4\n3\n2\n-6")).toStrictEqual("-6\n-5\n-4\n2\n3");
});
JavaScript
복사