문제
N개의 평면상의 좌표(x, y)가 주어지면 모든 좌표를 오름차순으로 정렬하는 프로그램을 작성하 세요. 정렬기준은 먼저 x값의 의해서 정렬하고, x값이 같을 경우 y값에 의해 정렬합니다.
풀이
function solution(arr) {
let answer = arr;
let j;
for (let i = 1; i < answer.length; i++) {
j = i;
console.log(answer[i] < answer[i - 1]);
while (answer[j] < answer[j - 1]) {
[answer[j], answer[j - 1]] = [answer[j - 1], answer[j]];
j -= 1;
}
}
return answer;
}
let arr = [
[2, 7],
[1, 3],
[1, 2],
[2, 5],
[3, 6],
];
console.log(solution(arr));
선택 정렬을 이용해서 풀었다. 이차원 배열을 비교할 때, 첫번째 값이 같다면 두번째 값으로 비교해주는가보다.
강사 풀이
function solution(arr) {
let answer = arr;
arr.sort((a, b) => {
if (a[0] === b[0]) return a[1] - b[1]; // x가 같을때 y기준 오름차순
else return a[0] - b[0]; // x가 다르면 x기준 오름차순
});
return answer;
}
let arr = [
[2, 7],
[1, 3],
[1, 2],
[2, 5],
[3, 6],
];
console.log(solution(arr));
sort를 이용해서 x의 비교를 통해 푸셨다. 이 방식이 더 효율적이고 직관적인 것 같다.
'코딩테스트 문제풀이 > inflearn' 카테고리의 다른 글
[인프런] Node.js / 섹션7-정렬과 그리디, 결정알고리즘 / 9. 결혼식 (0) | 2023.02.15 |
---|---|
[인프런] Node.js / 섹션7-정렬과 그리디, 결정알고리즘 / 8. 회의실 배정 (0) | 2023.02.15 |
[인프런] Node.js / 섹션7-정렬과 그리디, 결정알고리즘 / 6. 장난꾸러기 현수 (0) | 2023.02.15 |
[인프런] Node.js / 섹션7-정렬과 그리디, 결정알고리즘 / 5. Least Recently Used(카카오 캐시 문제 변형) (0) | 2023.02.15 |
[인프런] Node.js / 섹션7-정렬과 그리디, 결정알고리즘 / 4. 삽입정렬 (0) | 2023.02.15 |