문제
파이썬 풀이
튜플로 2차원 좌표를 입력받아 리스트 안에 저장한 후, x좌표를 기준으로 오름차순 정렬하는 문제이다. (x좌표가 같을 시 y좌표 비교)
import sys
input = sys.stdin.readline
n= int(input().rstrip())
v = []
for i in range(n) :
x, y = map(int, input().rstrip().split())
v.append((x,y))
v.sort()
for x,y in v :
print(x,y)
시간 복잡도 개선을 위해 input대신 sys.stdin.readline을 사용하였다.
단, readline으로 입력을 받으면 끝에 개행 문자를 가져온다 하여 rstrip을 통해 제거하여주었다.
입력받기
for i in range(n) :
x, y = map(int, input().rstrip().split())
v.append((x,y))
v라는 리스트 안에 x, y좌표를 튜플 형태로 저장하였다.
정렬하기
기본적으로 튜플이 저장된 리스트에서 sort함수를 적용하면 문제와 같은 정렬 기준으로 정렬되어 그냥 sort()만을 이용해 정렬하여 문제를 해결하였다.
그 외의 정렬 방법은 sort의 인자에 key값을 부여하여 할 수 있다. 기본적으로 오름차순으로 정렬되며 내림차순으로 정렬하기 위해서는 reverse=true 매개변수를 추가로 부여하면 된다.
v.sort(key=lambda x :x[0]) #첫 번째 인자로 오름차순 정렬
v.sort(key=lambda x :-x[0]) #첫 번째 인자로 내림차순 정렬1
v.sort(key=lambda x :x[0],reverse=Tre) #첫 번째 인자로 내림차순 정렬2
v.sort(key=lambda x :x[1]) #두 번째 인자로 오름차순 정렬
v.sort(key=lambda x :(x[0],x[1])) #첫 번째 인자로 오름차순 정렬, 같으면 두 번째 인자로
v.sort(key=lambda x :(x[1],x[0])) #두 번쨰 인자로 오름차순 정렬, 같으면 첫 번째 인자로
v.sort(key=lambda x :(-x[0],x[1])) #첫 번째 인자로 내림차순 정렬, 같으면 두 번째 오름차순
'Algorithm > 백준 문제풀이' 카테고리의 다른 글
[python] 1541번 - 잃어버린 괄호 (0) | 2021.11.23 |
---|---|
[python] 2108번 - 통계학 (0) | 2021.09.08 |
[python] 18870번 - 좌표 압축 (0) | 2021.09.03 |
[python] 10814번 - 나이순 정렬 (0) | 2021.09.03 |
[python] 11651 - 좌표 정렬하기2 (0) | 2021.09.01 |
댓글