728x90
반응형
문제
2차원 평면 위의 점 N개가 주어진다. 좌표를 x좌표가 증가하는 순으로, x좌표가 같으면 y좌표가 증가하는 순서로 정렬한 다음 출력하는 프로그램을 작성하시오.
첫째 줄에 점의 개수 N (1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 N개의 줄에는 i번점의 위치 xi와 yi가 주어진다. (-100,000 ≤ xi, yi ≤ 100,000) 좌표는 항상 정수이고, 위치가 같은 두 점은 없다.
풀이
정렬을 하면 되는데 정렬이 2차원 리스트의 조건으로 정렬을 하면 되는 구조이다.
SQL문으로 보면 Order By Column1 ASC, Column 2 DESC 이런식으로 말이다.
찾아보니 파이썬에서 지원하는 sort에서의 lambda를 이용해서 첫번째 리스트의 원소를 기준으로 배열하는데
첫번째 리스트가 같으면 두 번째 리스트로 배열할 수 있게 되어있다.
코드
num = int(input())
dataset = []
resultlist = []
for i in range(num):
dataset=list(map(int, input().split()))
resultlist.append(dataset)
resultlist.sort(key=lambda x: (x[0], x[1]))
for i in range(0, len(resultlist)):
print(str(resultlist[i][0])+' '+str(resultlist[i][1]))
728x90
반응형
'Dev > CodeBank' 카테고리의 다른 글
백준 #10989, 수 정렬하기3 <Python> (0) | 2023.03.29 |
---|---|
백준 #2108, 통계학 <Python> 알고리즘 (0) | 2023.03.28 |
백준 #1427, 소트인사이드 <Python> 알고리즘 (0) | 2023.03.27 |
댓글