sort() > feat.BOJ 11651

니나노개발생활·2021년 6월 17일
0
post-thumbnail

sort()

arr.sort([compareFunction])

: 배열의 요소를 정렬하는데 사용하는 함수

첫 번째 값이 두 번째 값보다 작을 경우 음수 값을 반환하고, 같을 경우 0을 반환하며, 그렇지 않을 경우 양수 값을 반환한다. 파라미터를 생략할 경우 요소는 ASCII 문자 기준 오름차순으로 정렬된다.

const num = [10, 3, 8, 4, 1];
num.sort();
//[1, 10, 3, 4, 8] > 숫자 타입을 문자 타입으로 변환하여 아스키 문자 기준으로 정렬되며 형 변환 이후에는 첫 번째 문자를 기준으로 비교함.

conpareFunction 파라미터

  • 반환값 < 0 (음수) : a가 b보다 앞에 위치
  • 반환값 = 0 : 순서 변경 없음
  • 반환값 > 0 (양수) : b가 a보다 앞에 위치

오름차순

const num = [10, 3, 8, 4, 1];
function compare(a,b) {
  return a-b;
}
num.sort(compare)
//[1,3,4,8,10]

내림차순

const num = [10, 3, 8, 4, 1];
function compare(a,b) {
  return b-a;
}
num.sort(compare)
//[10,8,4,3,1]

BOJ 알고리즘 11651번

const stdin = ['5', '0 4', '1 2', '1 -1', '2 2', '3 3'];

const n = stdin.shift();
const arr = [];

for (let i = 0; i<n; i++) {
    arr.push(stdin[i].split(' ').map(strN => parseInt(strN)));
}

let result = '';
//sort
arr.sort((a,b) => {
    if(a[1]!=b[1]) {
        return a[1]-b[1]
    }
    return a[0]-b[0]
})
.forEach(element => (result += `${element[0]} ${element[1]}\n`));

console.log(result)

이 문제는 y축을 기준으로 오름차순으로 정렬하고 만약 y축의 값이 같을 경우 x축이 오름차순으로 정렬되도록!

profile
깃헙으로 이사중..

0개의 댓글