Base/Algorithm Study

[Python/파이썬] 백준 알고리즘 11651번 - 좌표 정렬하기 2

koh1018 2021. 8. 19. 00:46
반응형

 

 

 

<풀이 1>

N = int(input())
coordinates = []
for _ in range(N):
    coordinates.append(list(map(int, input().split())))

# key=lambda를 이용해서 정렬할 기준을 x[1] 그리고 x[0]으로 잡음
coordinates.sort(key=lambda x: (x[1], x[0]))

for co in coordinates:
    print(co[0], co[1])

sort함수의 key인자를 이용해 lambda로 정렬할 기준을 잡는 방법이다.

 

 

<풀이 2>

N = int(input())
coordinates = []
for _ in range(N):
    a, b = map(int, input().split())
    coordinates.append([b, a])

coordinates.sort()

for co in coordinates:
    print(co[1], co[0])

생각을 뒤집어 (x, y) 이던 것을 (y, x)로 한 뒤 sort함수를 이용해서 정렬하는 것이다.

그리고 출력할 때는 거꾸로 co[1], co[0]으로 출력하면 된다.

 

 

 

<핵심 정리>

1. 리스트안의 리스트들을 sort() 함수로 정렬하면 리스트 안의 인덱스 0을 먼저 기준으로 잡고, 인덱스1, 2, ... 순으로 기준이 되어 정렬이 저절로 된다.

2. sort(key=lambda x: )로 정렬할 기준을 설정할 수 있다.

3. print할 때 콤마(,)로 값을 나누어 출력하면 한칸의 공백을 갖고 출력된다.

반응형