티스토리 뷰

728x90
반응형

문제

www.acmicpc.net/problem/11651

 

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])

 

 

 

반응형
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/10   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31