문제 :
2차원 평면 위의 점 N개가 주어진다. 좌표를 y좌표가 증가하는 순으로, y좌표가 같으면 x좌표가 증가하는 순서로 정렬한 다음 출력하는 프로그램을 작성하시오.
입력 :
첫째 줄에 점의 개수 N (1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 N개의 줄에는 i번점의 위치 xi와 yi가 주어진다. (-100,000 ≤ xi, yi ≤ 100,000) 좌표는 항상 정수이고, 위치가 같은 두 점은 없다.
출력 :
첫째 줄부터 N개의 줄에 점을 정렬한 결과를 출력한다.
좌표 정렬하기1과 매우 유사한 문제다.
< 내 코드 >
1 2 3 4 5 6 7 8 | import sys N = int(input()) list = [tuple(map(int, sys.stdin.readline().split())) for i in range(N)] list.sort(key = lambda x : (x[1], x[0])) for i in list: print(*i) |
6번 줄에서 막혀서 구글 검색의 도움을 살짝 받았다.
8번 줄에서 print(*i)를 해줬다. 그냥 print(i)를 할 경우
(1, -1)
(1, 2)
(2, 2)
(3, 3)
(0, 4)
이 출력된다.
* 는 튜플 타입 데이터를 대입하겠다는 의미이다. 위 코드에서는 list가 튜플을 원소로 갖는다.
list = [(1, -1), (1, 2), (2, 2), (3, 3), (0, 4)]
참고)
** 는 키와 값의 쌍으로 이루어진 사전 타입 데이터를 대입하겠다는 뜻이다.
0 Comments
Post a Comment