dogo_ day

JavaScript 코딩테스트 9. 문제(백준 11650번) 본문

IT/코딩테스트_

JavaScript 코딩테스트 9. 문제(백준 11650번)

dogo_ 2023. 5. 3. 15:00

🔅알고리즘 난이도 Lv. 1

🌈문제풀이

자바스크립트에서 sort()의 시간복잡도는 (nlogn) 이다.

sort의 동작 원리(compareFunction)를 알고있다면 응용해서 문제를 해결할 수 있다.

https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Array/sort

 

Array.prototype.sort() - JavaScript | MDN

sort() 메서드는 배열의 요소를 적절한 위치에 정렬한 후 그 배열을 반환합니다. 정렬은 stable sort가 아닐 수 있습니다. 기본 정렬 순서는 문자열의 유니코드 코드 포인트를 따릅니다.

developer.mozilla.org

그리고 결과를 출력할 때 매번 console.log를 찍는다면 시간초과일 수 있다.

result 변수에 담아서 한번만 출력하는 연습을 하자

let fs = require('fs');
let input = fs.readFileSync('/dev/stdin').toString().split('\n');

let n = Number(input[0]);
let arr = [];

for(let i = 1; i <= n; i++){
    let r = input[i].split(' ').map(Number);
    arr.push(r);
};

arr.sort((a, b) => {
    if(a[0] > b[0])
        return 1;
    else if (b[0] > a[0])
        return -1;
    else{
        if(a[1] > b[1])
            return 1;
        else if(b[1] > a[1])
            return -1;
        else
            return 0;
    }
})

let result = '';
         
for(const x of arr)
    result += x[0] + ' ' + x[1] + '\n';

console.log(result);
const compare = (a,b) => {
	if(a[0] != b[0]) return a[0] - b[0]; // x좌표를 기준으로 오름차순
    else return a[1] - b[1]; // x가 같으면 y좌표 기준으로 오름차순
}

// 출처 : 패스트캠퍼스 - JavaScript 코딩테스트 131개 예재 & CS지식으로 끝내기