11651번: 좌표 정렬하기 2 (acmicpc.net)
문제
2차원 평면 위의 점 N개가 주어진다. 좌표를 y좌표가 증가하는 순으로, y좌표가 같으면 x좌표가 증가하는 순서로 정렬한 다음 출력하는 프로그램을 작성하시오.
입력
첫째 줄에 점의 개수 N (1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 N개의 줄에는 i번점의 위치 xi와 yi가 주어진다. (-100,000 ≤ xi, yi ≤ 100,000) 좌표는 항상 정수이고, 위치가 같은 두 점은 없다.
출력
첫째 줄부터 N개의 줄에 점을 정렬한 결과를 출력한다.
풀이
n = int(input())
a = []
for i in range(n):
x,y = map(int,input().split())
a.append([y,x])
a = sorted(a)
for i in range(n):
print(a[i][1], a[i][0])
아이디어: 입력 좌표를 리스트로 받는다!
어려웠던 이유: y sort도 sort인데 파이썬에서 x,y 같이 묶는 법을 몰랐다. 묶어지면 y부터 sort하고 y가 같을 때 x끼리 비교하려 했음.
[백준] 11651번 파이썬(python) - 좌표 정렬하기 2 (tistory.com)
사용된 개념
sorted
정렬함수
파이썬에서 시퀀스 자료형을 정렬하는 방법으로는 직접 정렬 알고리즘을 작성하는 방법이 있고, 내장함수를 사용하는 방법이 있다. sorted라는 정렬함수는 시퀀스 자료형 뿐만 아니라 순서에 구애받지 않는 자료형에도 적용할 수 있다. 정렬된 결과는 list로 반환된다.
#str
sorted("hello")# ["e","h","l","l","o"]
#list
sorted([5,2,1,3,4])# ["1","2","3","4","5"]
sorted([[2,1,3],[3,2,1],[1,2,3]])# [[1, 2, 3], [2, 1, 3], [3, 2, 1]]
#set
sorted({3,2,1})# [1,2,3]
#tuple
sorted((3,2,1))# [1,2,3]
#dict
sorted({3:1,2:3,1:4})# [1,2,3]
리스트로 입력
x,y = map(int,input().split())
'Algorithm > Python' 카테고리의 다른 글
백준 - 11729 - 하노이의 탑 이동 순서 - Python/재귀 (0) | 2021.03.09 |
---|---|
백준 - 2805 - 나무 자르기 - Python/이분탐색 (0) | 2021.03.09 |
백준 - 4673 - 셀프 넘버 - Python/sort, list, for문 활용 (0) | 2021.03.08 |
백준 - 1929 - 소수 구하기 - Python (0) | 2021.03.08 |
백준 - 1157- 단어공부 - Python / set, count 함수 (0) | 2021.03.08 |
댓글