티스토리 뷰
728x90
반응형
문제
11651번: 좌표 정렬하기 2
첫째 줄에 점의 개수 N (1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 N개의 줄에는 i번점의 위치 xi와 yi가 주어진다. (-100,000 ≤ xi, yi ≤ 100,000) 좌표는 항상 정수이고, 위치가 같은 두 점은 없다.
www.acmicpc.net
코드
def abc(x):
return (x[1], x[0])
T = int(input())
a = []
for i in range(T):
a.append(list(map(int, input().split())))
a.sort(key=abc)
for i in a:
print(i[0], i[1])
코드설명
a 리스트를 만들어준 다음에 a리스트 안에
for 문을 돌면서 바로 리스트를 또 넣어준다. => a는 [[x,y], [x,y], [x,y]] 이런 형태가 된다.
이제 a를 정렬해줘야하는데 문제에서 y를 기준으로 먼저 정렬을 해줘야 하기때문에 sort에 key값을 변경해줘서 y값으로 먼저 정렬이 될 수 있게 해줘야 한다.
a 리스트에 인자값을 abc로 보내서 리턴값을 key에 넣고 비교후 정렬해준다.
lambda를 이용해 간단하게 만들어 줄 수도 있다.
lambda x : (x[1], x[0]) , def abc(x): return (x[1], x[0])
둘이 같은 뜻이기 때문에 함수를 지우고 lambda로만 표현 가능하다.
T = int(input())
a = []
for i in range(T):
a.append(list(map(int, input().split())))
a.sort(key=lambda x : (x[1], x[0]))
for i in a:
print(i[0], i[1])
반응형
'알고리즘 > 백준' 카테고리의 다른 글
[백준] 1011번 Fly me to the Alpha Centauri (Python) (1) | 2021.03.12 |
---|---|
[백준] 2839번 설탕배달 (Python) (0) | 2021.03.12 |
[백준] 1316번 그룹단어체커 (Python) (0) | 2021.03.12 |
[백준] 7576번 토마토 (Python) (0) | 2021.03.11 |
[백준] 1874번 스택 수열 (Python) (0) | 2021.03.10 |
댓글