간단한 정렬 문제 ! x좌표를 기준으로 내림차순 정렬하고, x좌표가 같다면 y좌표를 기준으로 정렬한다.
문제를 보자마자 좌표 -> 클래스 객체로, 비교 -> 연산자 오버로딩으로 풀자는 생각이 들어서 그렇게 풀어봤다.
class coord :
def __init__(self, x, y):
self.x = x
self.y = y
def __lt__(self, c):
if (self.x == c.x):
return (self.y < c.y)
return self.x < c.x
n = int(input())
lst = []
for i in range(n):
a, b = map(int, input().split())
lst.append(coord(a, b))
lst.sort()
for i in lst:
print(i.x, i.y)
__lt__ 는 < 연산자인데, 파이썬 내장 sort 함수가 어떤 메커니즘으로 동작하는지는 몰라도 비교 연산자를 활용할 것이라 생각했다. 그 중 <인지 > 인지는 몰라서 일단 lt부터 돌려봤는데 lt인 < 연산자가 이용되더라.
rt 연산자를 오버로딩한다고 하면 sort함수가 작동하지 않는다.
연산자 오버로딩만 안다면 쉽게 풀 수 있던 문제였다 !

'Algorithms' 카테고리의 다른 글
백준 1181. 단어 정렬 (0) | 2022.06.07 |
---|---|
백준 11651. 좌표 정렬하기 2 (0) | 2022.06.07 |
백준 1427. 소트인사이드 (0) | 2022.06.07 |
백준 2108. 통계학 (0) | 2022.06.07 |
백준 2750. 수 정렬하기1 (0) | 2022.06.07 |
댓글