Notice
Recent Posts
Recent Comments
Link
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

Joon's Space

[Python] 백준 알고리즘 #11651 좌표 정렬하기 2 본문

Algorithm/baekjoon

[Python] 백준 알고리즘 #11651 좌표 정렬하기 2

Happy Joon 2021. 1. 18. 06:43

문제풀이

 

①  좌표를 y좌표가 증가하는 순으로,

②  y좌표가 같으면 x좌표가 증가하는 순서로 정렬

 

정렬하는 기준이 2가지인 정렬이다. 이와 같은 경우에는 key= 파라미터를 이용한다. 

 

key 파라미터는 함수를 받는 파라미터이기에 람다식을 이용할 수 있다. 

 

이 문제에서는 y좌표가 큰 값부터 정렬하고 같다면 x좌표가 큰 순으로 정렬해야 한다. 

이와 같이 2가지 정렬 조건이라면 우선순위순으로 기준을 왼쪽부터 나열해준다. 

key 함수의 리턴 값이 (첫번째 기준, 두 번째 기준) 형식의 튜플이 오면 된다. 

 

ex) sorted(list, key=lambda x:(x[1], x[0]) # x[0]=x 좌표, x[1]=y좌표이기 때문

 

소스코드

 

import sys
input = sys.stdin.readline

N = int(input())
result = []

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

result = sorted(result, key=lambda x:(x[1],x[0]))

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

 

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

 

반응형