좌표 정렬하기 2 - 11651
분류
정렬
문제 설명
2차원 평면 위의 점 N개가 주어진다. 좌표를 y좌표가 증가하는 순으로, y좌표가 같으면 x좌표가 증가하는 순서로 정렬한 다음 출력하는 프로그램을 작성하시오.
입력
첫째 줄에 점의 개수 N (1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 N개의 줄에는 i번점의 위치 xi와 yi가 주어진다. (-100,000 ≤ xi, yi ≤ 100,000) 좌표는 항상 정수이고, 위치가 같은 두 점은 없다.
🙋 문제 해석
이 문제는 2차원 평면상의 점들이 주어졌을 때, 이를 y좌표가 증가하는 순으로, y좌표가 같으면 x좌표가 증가하는 순으로 정렬하여 출력하는 문제입니다..!
sort까지는 다들 알겠지만 sort로 풀게되면 x좌표부터 정렬하는 현상이 생기는데,
이때 sort(key=function) 인자를 사용하면 됩니다.
🔑 Solution 🔑
input = sys.stdin.readline
T = int(input())
cor=[]
for _ in range(T) :
cor.append(list(map(int,input().split())))
cor.sort(key=lambda x : (x[1],x[0]))
for i in range(len(cor)) :
print(f"{cor[i][0]} {cor[i][1]}")
먼저 이 문제를 이해하는데 있어서 labmda에 대한 기본지식이 필요합니다.
# 이런 형식
lambda 인자 : 반환값
# 예
lambda x : x * 2 # x라는 인자를 받아서 x를 2배한 값을 반환
sort 함수의 key 인자에 lambda 함수를 사용하면, 리스트를 정렬할 때 어떤 기준으로 정렬할 지를 지정할 수 있습니다
numbers = [(3, 2), (1, 1), (2, 3), (1, 2)] #
numbers.sort(key=lambda x: (x[1], x[0]))
[(1, 1), (1, 2), (3, 2), (2, 3)]
결과 값
🙇
'코딩테스트 > 백준' 카테고리의 다른 글
[백준][1026] - 보물 python 파이썬 (0) | 2023.04.24 |
---|---|
[백준][1302] - 베스트셀러 python 파이썬 (0) | 2023.04.23 |
[백준][1654] - 랜선 자르기 python 파이썬 (0) | 2023.04.21 |
[백준][2805] - 나무자르기 파이썬 python (0) | 2023.04.21 |
[백준][1003] - 피보나치 함수 python 파이썬 (2) | 2023.04.19 |