본문 바로가기
행사 및 개인 프로젝트/알고리즘 풀어보기

알고리즘 : 좌표 정렬 (sort 함수를 사용한 정렬 응용)

by 번데기 개발자 2023. 3. 21.
반응형

인프런 JS 알고리즘 강좌 문제를 한번 풀이해보겠습니다.

 

강좌는 아래 인프런 강좌를 참고해주시면 됩니다.

 

강좌 바로가기

 

 

문제 설명


N개의 평면상의 좌표(x, y)가 주어지면 모든 좌표를 오름차순으로 정렬하는 프로그램을 작성하세요.


정렬기준은 먼저 x값의 의해서 정렬하고, x값이 같을 경우 y값에 의해 정렬합니다.

 

 

입력 설명

첫째 줄에 좌표의 개수인 N(3<=N<=100,000)이 주어집니다.

두 번째 줄부터 N개의 좌표가 x, y 순으로 주어집니다. x, y값은 양수만 입력됩니다.

 


출력 설명

N개의 좌표를 정렬하여 출력하세요.

 


입력 예제


5

2 7
1 3

1 2

2 5

3 6

 

출력 예제

 

1 2
1 3
2 5
2 7
3 6

 

 

문제 해석

 

간단하게 sort 함수에 대해서만 이해하면 됩니다..

 

sort 함수는 JS에서 배열을 정렬해주는 함수로 보통 오름차순 정렬을 쉽게 하기 위해서 사용됩니다.

 

해당 문제는 좌표가 주어졌는데, x좌표가 같을때는 y좌표를 기준으로 정렬하고,

 

x좌표가 다를때는 x좌표를 통해 정렬하는 로직을 추가해주면 문제가 간단하게 해결됩니다.

 

Sort 함수 자세히 알아보기

 

 

 

내 해답

 

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

  return answer;
}

 

  1. 좌표의 x를 비교하여 배열을 정렬한다.
  2. 정렬된 배열을 다시 비교한다. 이때 좌표의 x가 같으면 y를 기준으로 정렬한다.

 

인프런 해답

 

function solution(arr){
  let answer=arr;
  arr.sort((a, b)=>{
    if(a[0]===b[0]) return a[1]-b[1];
    else return a[0]-b[0];
  });
  return answer;
}
  1. 좌표의 x가 같으면 x를 비교하고, 다르면 좌표의 y를 기준으로 정렬한다. (한번에 처리)

 

 

마무리

 

해당 문제를 풀면서 sort함수에 대해 더 자세히 알수 있었습니다.

 

쉬운문제라 간단하게 정리하고 조금 더 어렵고 도전적인 알고리즘을 많이 풀어봐야될것 같습니다. 

반응형