728x90
https://www.acmicpc.net/problem/11650
x,y 좌표쌍을 여러 개 입력 받고, 정렬하는 문제이다.
x좌표에 대해 오름차순으로 정렬하고, 만약 x좌표 값이 동일하다면 y좌표 값을 기준으로 오름차순 정렬해주면 된다.
사실 파이썬 정렬의 기본값은 오름차순이라, 아래 코드처럼 정렬 기준을 정해주지 않아도 되지만 쓸 경우가 반드시 있을 것이라 생각하므로 알아두면 좋을 것 같다!
Key가 의미하는 것은 key 값을 기준으로 정렬하라는 것이다. (람다는 익명함수로, 함수를 바로 정의하여 사용할 수 있도록 해주는 것!)
형식은 lambda 인자 : 표현식 이다.
2차원 리스트에서 sorted(key = lambda x : x[0]) 과 같이 쓸 경우, 첫 값을 기준으로 오름차순으로 정렬되고
sorted(key = lambda x : -x[0]) 와 같이 사용할 경우, 첫 값을 기준으로 내림차순 정렬된다.
import sys
input = sys.stdin.readline
n = int(input())
ans=[]
for _ in range(n):
#arr=[]
arr = list(map(int, input().split()))
ans.append(arr)
ans.sort(key=lambda x: (x[0], x[1]))
for con in ans:
print(con[0], con[1], end='\n')
728x90
'알고리즘 > 백준(BOJ)' 카테고리의 다른 글
[백준/C++] 11049번 행렬 곱셈 순서 (0) | 2022.10.27 |
---|---|
[백준/파이썬] 1929번 소수 구하기 (0) | 2022.10.24 |
[백준/파이썬] 10815번 숫자 카드 (0) | 2022.10.10 |
[백준/파이썬] 1789번 수들의 합 (0) | 2022.10.07 |
[백준/Python] 2163번 초콜릿 자르기 (0) | 2022.10.06 |