Altiora Petamus

좌표 정렬하기 본문

1day-1algorithm

좌표 정렬하기

Haril Song 2021. 5. 16. 19:09
 

11650번: 좌표 정렬하기

첫째 줄에 점의 개수 N (1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 N개의 줄에는 i번점의 위치 xi와 yi가 주어진다. (-100,000 ≤ xi, yi ≤ 100,000) 좌표는 항상 정수이고, 위치가 같은 두 점은 없다.

www.acmicpc.net

 

 

🤔생각해보기

파이썬의 정렬은 람다를 사용할 수 있다. 다중 조건일 경우 튜플로 넣어주면 되므로 아주 간단하게 해결할 수 있다.

 

 

성공 코드

N = int(input())

position = sorted([tuple(map(int, input().split())) for _ in range(N)], key=lambda x: (x[0], x[1]))
for pos in position:
    print(*pos)

갑자기 흥미가 생겨서 약간의 가독성을 희생시키고 코드 길이를 줄여보았다 ㅋㅋ...

여기서 더 줄이려면 좌표의 개수를 받아오는 N도 position 안으로 넣어버리면 되지만, 굳이 그렇게까지 하진 않았다.

 

코드를 간단하게 해설하자면,

  • N 만큼 루프를 돌면서 배열 안에 튜플로 좌표값을 저장한다.
  • sorted 로 정렬하는데 lambda 를 활용하면 x[0] 값을 먼저 정렬한 후, 그 중 x[1] 값으로 다시 정렬할 수 있다. 조건은 튜플로 넣어준다.
  • *args 를 사용하여 담겨있는 값들을 순차적으로 출력한다.

 

더 알아두면 좋은 점

  • 람다의 키 값으로 '-' 를 붙이면 내림차순으로 정렬이 된다.
  • 출력할 때 * 를 붙여서 출력하면 요소의 값을 띄워서 출력한다. → 문제 해결할 때 아주 꿀팁!

 

'1day-1algorithm' 카테고리의 다른 글

카드 2  (0) 2021.05.25
검문  (0) 2021.05.23
부녀회장이 될테야  (0) 2021.05.07
셔틀버스  (0) 2021.04.26
신규 아이디 추천  (0) 2021.04.23