본문 바로가기
코딩테스트/백준 알고리즘

백준 알고리즘 | 11650 : 좌표 정렬하기 (Python / 파이썬)

by 함께 공부해요 2020. 12. 15.


좌표 정렬하기 성공분류

시간 제한

메모리 제한

제출

정답

맞은 사람

정답 비율

1 초

256 MB

34128

16370

12521

48.760%

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


문제

2차원 평면 위의 점 N개가 주어진다. 좌표를 x좌표가 증가하는 순으로, x좌표가 같으면 y좌표가 증가하는 순서로 정렬한 다음 출력하는 프로그램을 작성하시오.

입력

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

출력

첫째 줄부터 N개의 줄에 점을 정렬한 결과를 출력한다.

알고리즘 분류

정렬


백준 알고리즘 # 11650번 : 좌표 정렬하기

출처:  https://wikidocs.net/14

import sys
input = sys.stdin.readline

n = int(input())

array = []
for i in range(n):
    [a, b] = map(int, input().split())
    array.append([a, b])

s_array = sorted(array)

for i in range(n):
    print(s_array[i][0], s_array[i][1])

풀이

리스트 안에 있는 리스트를 인덱싱 할 줄만 알면 쉽게 풀 수 있는 문제!

시간 초과가 뜨므로 sys.stdin.readline으로 input을 초기화시켜서 입력받고

array를 리스트로 설정해서 for문으로 n번 만큼 [a, b]를 리스트 안에 추가(append)했습니다.

이것을 출력해보면 [[3, 4], [1, 1], [1, -1], [2, 2], [3, 3]]이 나오게 되고

sorted 함수를 통해 정렬만 해주면 순서대로 정렬이 됩니다.

key point

마지막으로 n만큼 for문을 반복하며 정렬해준 s_array에 들어있는 리스트를 [i][0], [i][1] 씩 출력해주면

i = 0~4가 쭉 돌아가며 리스트 안에 들어있는 리스트를 인덱싱해오면서 문제 풀이 끄-읏!!👏🏻

(이해가 안되시는 분들은 위에 사진 첨부해놓은 '삼중 리스트에서 인덱싱하기'를 참고해주세요)

세한 코드가 궁금하신 분들은 아래 GitHub 코드를 참고해주세요🙏🏻

 

wook2124/Algorithm-Test

Practice algorithm. Contribute to wook2124/Algorithm-Test development by creating an account on GitHub.

github.com

최종 소스코드

댓글