Notice
Recent Posts
Recent Comments
Link
Love Every Moment
〔백준/파이썬〕11651번 좌표 정렬하기2 본문
반응형
출처
문제
2차원 평면 위의 점 N개가 주어진다. 좌표를 y좌표가 증가하는 순으로, y좌표가 같으면 x좌표가 증가하는 순서로 정렬한 다음 출력하는 프로그램을 작성하시오.
첫째 줄에 점의 개수 N (1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 N개의 줄에는 i번점의 위치 xi와 yi가 주어진다. (-100,000 ≤ xi, yi ≤ 100,000) 좌표는 항상 정수이고, 위치가 같은 두 점은 없다.
예제
# 입력
5
0 4
1 2
1 -1
2 2
3 3
# 출력
1 -1
1 2
2 2
3 3
0 4
풀이
import sys
N = int(sys.stdin.readline().rstrip())
# 좌표 리스트
points = list()
for _ in range(N):
point = tuple(map(int, sys.stdin.readline().rstrip().split()))
points.append(point)
points.sort(key = lambda x: (x[1], x[0]))
for x, y in points:
print(x, y)
노트
- 만약 11650번 문제처럼 x좌표-y좌표 순으로 정렬하는 거라면 일반적인 sort() 로 해결 가능
- 하지만 이 문제에서는 y좌표가 증가하는 순으로 정렬하되, y좌표가 같으면 x좌표가 증가하는 순으로 정렬
- 따라서 sort() 의 매개변수 key 에 무엇을 기준으로 정렬하는지 알려주어야 한다
- points.sort(key = lambda x: (x[1], x[0])) 를 통해 우선 y좌표를 기준으로 정렬하게 하고, 만약 y좌표가 같은 경우 x좌표를 기준으로 정렬하도록 할 수 있다
반응형
'PROGRAMMING::LANGUAGE > Python' 카테고리의 다른 글
〔프로그래머스/파이썬〕더 크게 합치기 (0) | 2023.07.03 |
---|---|
〔프로그래머스/파이썬〕문자열 섞기 (0) | 2023.07.03 |
〔프로그래머스/파이썬〕신고 결과 받기 (+딕셔너리 컴프리헨션 사용법) (0) | 2022.07.01 |
〔파이썬〕클래스란? 클래스, 인스턴스, 속성, 메서드 사용법 (0) | 2022.06.30 |
〔백준/파이썬〕13305번 주유소 (0) | 2022.06.29 |
Comments