본문 바로가기
Python

[백준] 11650번 : 좌표 정렬하기

by Leunco 2021. 12. 31.

 

유형 : 정렬

[예제]

5
3 4
1 1
1 -1
2 2
3 3

[출력]

1 -1
1 1
2 2
3 3
3 4

1. 내 풀이

N = int(input())

num_list = []

for i in range(N):
    num1, num2 = input().split(' ')
    num1 = int(num1)
    num2 = int(num2)

    num_list.append([])
    num_list[i].append(num1)
    num_list[i].append(num2)

num_list = sorted(num_list)

for i in range(N):
    print(num_list[i][0],num_list[i][1])

▷ 2차원 리스트로 만드는 게 핵심이다.

▷ x좌표, y좌표를 하나의 리스트에 담고, 기본 정렬 라이브러리인 sorted()를 이용하였다.

▷ 참고한 블로그 : 23.1 2차원 리스트를 만들고 요소에 접근하기 中 톱니형 리스트

 

 

2. 다른 풀이

출처 : 패스트캠퍼스 - 알고리즘 / 기술면접 완전 정복 올인원 패키지 Online

 

** 핵심 아이디어
1. (x좌표, y좌표)를 입력받은 후 x좌표, y좌표 순서대로 오름차순 정렬
2. 파이썬의 기본 정렬 라이브러리는 기본적으로 튜플의 인덱스 순서대로 오름차순 정렬
3. 따라서 단순히 기본 정렬 라이브러리를 이용(key 속성 설정 없이)

 

n = int(input())
array = []

for _ in range(n):
    x,y = map(int, input().split(' '))
    array.append((x,y))

array = sorted(array)

for i in array:
    print(i[0],i[1])

 

문제 출처 : https://www.acmicpc.net/problem/11650

 

11650번: 좌표 정렬하기

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

www.acmicpc.net

 

반응형

'Python' 카테고리의 다른 글

[백준] 2747번 : 피보나치 수  (0) 2022.01.01
[백준] 10989번 : 수 정렬하기 3  (0) 2022.01.01
[백준] 10814번 : 나이순 정렬  (0) 2021.12.31
[백준] 1427번 : 소트인사이드  (0) 2021.12.27
[백준] 2750번 : 수 정렬하기  (0) 2021.12.27

댓글