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

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

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


좌표 정렬하기 2 성공분류

시간 제한

메모리 제한

제출

정답

맞은 사람

정답 비율

1 초

256 MB

17496

11727

9965

69.356%

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


문제

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

입력

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

출력

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

알고리즘 분류

정렬


 

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

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

blog.naver.com/wook2124/222171813015

 

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

좌표 정렬하기 성공분류https://www.acmicpc.net/problem/11650문제2차원 평면 위의 점 N개가 주어진다. ...

blog.naver.com

import sys
input = sys.stdin.readline

n = int(input())

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

s_array = sorted(array)

for y, x in s_array:
    print(x, y)

"""
// # 두번째 출력방법
for i in range(n):
    print(s_array[i][1], s_array[i][0])
"""

풀이

주요 풀이방법은 저번에 풀었던 '좌표 정렬하기'와 동일해요👍🏻

입력되는 시간을 줄이기 위해서 sys.stdin.readline()을 input으로 정의하고

n 변수에 테스트 케이스의 수를 입력받은 후 그만큼 for문으로 반복해줬어요.

array 변수를 만들어서 리스트를 미리 초기화해두고

그 안에서 x좌표, y좌표를 map으로 int 정수로 각각 입력받은 뒤

key point

전 문제와 다르게 예제 출력 값이 y를 기준으로 정렬되게끔 array 리스트에

[y, x] 순서로 append 했습니다🙌🏻

다음으로 sorted 함수를 이용해서 정렬하게 되면

array = [[-1, 1], [2, 1], [2, 2], [3, 3], [4, 0]]

위와 같이 array에 정렬된 숫자들이 나열됩니다.

이제 마지막으로 코드 풀이에 쓴 것과 같이 두 가지 방법 중 하나를 택해서 출력하면 문제풀이 끄-읏👏🏻

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

 

wook2124/Algorithm-Test

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

github.com

최종 소스코드

댓글