BAEKJOON/단계별로 풀어보기

[BOJ] 11651번 : 좌표 정렬하기2

말하는 알감자 2022. 9. 7. 00:46
h2>🔒 문제

2차원 평면 위의 점 N개가 주어진다. 좌표를 y좌표가 증가하는 순으로, y좌표가 같으면 x좌표가 증가하는 순서로 정렬한 다음 출력하는 프로그램을 작성하시오.

⌨ 입력

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

🖨 출력

첫째 줄부터 N개의 줄에 점을 정렬한 결과를 출력한다.

📚 예제

Ex1)

5
0 4
1 2
1 -1
2 2
3 3


1 -1
1 2
2 2
3 3
0 4

📌 풀이

파이썬 sorted 함수에서 정렬할때 고려할 것의 우선순위를 정할 수 있어서 그것을 사용해서 문제를 풀었다.

key 인자에 함수를 넘겨주면 우선순위가 정해진다.

리스트2 = sorted(리스트1, key = lambda x : 우선순위1, 우선순위2)

우선 순위에 -을 붙이면 현재와 반대 차순으로 정렬

🔑 python 코드


import sys

N = int(sys.stdin.readline())
ary = []

for i in range(N):
    ary.append([int(x) for x in sys.stdin.readline().split()])

ans = sorted(ary,key = lambda x:(x[1],x[0])) # sorting 할 때 우선순위 지정 

for i in range(N):
    print(ans[i][0],ans[i][1])

'BAEKJOON > 단계별로 풀어보기' 카테고리의 다른 글

[BOJ] 10814번 : 나이순 정렬  (0) 2022.09.07
[BOJ] 1181번 : 단어 정렬  (0) 2022.09.07
[BOJ] 11650번 : 좌표 정렬하기  (0) 2022.09.06
[BOJ] 2108번 : 통계학  (0) 2022.09.05
[BOJ] 10989번 : 수 정렬하기3  (0) 2022.09.04