본문 바로가기
Algorithm/백준

[Python] 백준 11650번 - 좌표 정렬하기

by 애기 개발자 2022. 10. 17.
반응형

문제

2차원 평면 위의 점 N개가 주어진다. 좌표를 x좌표가 증가하는 순으로, x좌표가 같으면 y좌표가 증가하는 순서로 정렬한 다음 출력하는 프로그램을 작성하시오.

입력

첫째 줄에 점의 개수 N (1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 N개의 줄에는 i번점의 위치 xi와 yi가 주어진다. (-100,000 ≤ xi, yi ≤ 100,000) 좌표는 항상 정수이고, 위치가 같은 두 점은 없다.

출력

첫째 줄부터 N개의 줄에 점을 정렬한 결과를 출력한다.

 


앞선 문제들에게서 보았던 sort 정렬에 lambda를 사용하는 문제다.

 

2022.10.08 - [Algorithm/이것이 코딩테스트다] - [Python][이코테] 성적이 낮은 순서로 학생 출력하기

 

import sys
n = int(sys.stdin.readline())
data = []
for _ in range(n):
    input_data = list(map(int, sys.stdin.readline().split()))
    data.append((input_data[0], input_data[1]))

data.sort(key = lambda b: b[1])
data.sort(key = lambda a: a[0])

for i in data:
    print(i[0], i[1])

처음에는 

data.sort(key = lambda b: b[1])
data.sort(key = lambda a: a[0])

 

위치를 바꾼 

 

data.sort(key = lambda a: a[0])
data.sort(key = lambda b: b[1])
 
위의 방식으로 했다가 틀렸습니다를 보고
 
바꿔서 제출했더니 통과 되었다.
 

 

시간이 392ms로 살짝 아쉽긴 하지만 맞춘사람을 보니 가장 빠른사람은 내 속도의 2배 빠른 180ms에도 푼 코드가 있지만

 

봐도 이해가잘.. 안된다.

 

그 외에는 내가 푼 방법과 비슷하게 lambda를 쓰는 방식이 주로 사용되었으며

 

입출력 방식에서의 차이로 시간이 크게 달리 나온것으로 보였다.

반응형

댓글