본문 바로가기
Algorithm/Python

백준 - 11651 - 좌표 정렬하기 2 - Python/sorted

by imagineer_jinny 2021. 3. 9.

11651번: 좌표 정렬하기 2 (acmicpc.net)

 

11651번: 좌표 정렬하기 2

첫째 줄에 점의 개수 N (1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 N개의 줄에는 i번점의 위치 xi와 yi가 주어진다. (-100,000 ≤ xi, yi ≤ 100,000) 좌표는 항상 정수이고, 위치가 같은 두 점은 없다.

www.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)

 

[백준] 11651번 파이썬(python) - 좌표 정렬하기 2

https://www.acmicpc.net/problem/11651 11651번: 좌표 정렬하기 2 첫째 줄에 점의 개수 N (1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 N개의 줄에는 i번점의 위치 xi와 yi가 주어진다. (-100,000 ≤ xi, yi ..

oort-cloud.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())

댓글