Keep going

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

코딩/백준

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

Howard Schultz 2020. 8. 14. 11:49
반응형

https://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

좌표 정렬하기 1은 x,y 좌표를 각각 따로 리스트로 만들고, 그 리스트들을 이용하여 좌표를 나타내는 새로운 리스트를 만들어서 해결하였다. 하지만 이 경우에는 동일한 방법으로 하는 것이 쉽지 않았다. y좌표로 먼저 정렬해야했기에 순서를 바꿔야했던 것이 문제였다. 그래서 구글 검색을 통해 다른 답안을 공부하는 방법으로 접근했다.

num = int(input())
a = []
for i in range(num):
    [x, y] = map(int, input().split())
    rev = [y, x]
    a.append(rev)
b = sorted(a)
for i in range(num):
    print(b[i][1], b[i][0])

이 코드는 솜씨좋은 장씨님의 블로그에서 얻을 수 있었다. (https://somjang.tistory.com/entry/BaeKJoon-11651%EB%B2%88-%EC%A2%8C%ED%91%9C-%EC%A0%95%EB%A0%AC%ED%95%98%EA%B8%B0-2-Python?category=351755)

1. 먼저 숫자를 입력 받는다.

2. 빈 리스트를 만든다. 11650번에서 내가 썼던 방법처럼 x, y좌표를 따로 저장할 리스트를 만들 필요가 없었다.

3. 입력 받은 숫자의 횟수 만큼, x, y좌표를 리스트의 형태로 입력받는다. 

4. x, y 좌표를 뒤집어서 [y, x]의 형태로 a 리스트에 추가한다.

5. a 리스트를 sorted로 정렬한 것을 b로 설정한다. 

6. 처음 입력된 횟수 만큼, b의 i번째 항의 1번째 요소, i번째 항의 0번째 요소를 출력한다. [y, x]형태로 저장되어 있었기 때문에 다시 출력될 때는 x y 형태로 출력된다. 

 

 

반응형