본문 바로가기
Algorithms

백준 11650. 좌표 정렬하기

by Brian Go 2022. 6. 7.

 

간단한 정렬 문제 ! 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

댓글