
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
문제는 간단하지만 sorted()함수에서 조건을 거는 방법이 익숙하지 않으면 어려울 수 있다. 해당 알고리즘에서 A라는 리스트에서 각 (x,y)를 튜플 형태로 저장을 하고 sorted()에서 key값에 lambda 함수를 사용하여 y좌표인 A[1], x좌표인 A[1]을 순서대로 정렬 조건을 달면 된다. 따라서 코드는 다음과 같이 작성이 된다.
N = int(input())
A = []
for _ in range(N):
x,y = map(int, input().split(' ',2))
A.append((x,y))
#A=으로 반드시 A를 정렬된 값으로 지정해야한다. 그렇지 않으면 기존 A값은 그대로이다
A = sorted(A, key = lambda A: (A[1],A[0]))
for i in range(N):
print(*A[i])
이때 주의할 점은 그냥 sorted(A,~)의 경우 기존 리스트 A의 값에 변화를 주지 않는다는 것이다. 정렬받은 값으로 새로 지정하려면 반드시 리스트 변수 A를 정렬된 A로 지정을 해야한다.
'알고리즘_파이썬' 카테고리의 다른 글
| 백준 1874 스택 수열 (1) | 2024.01.23 |
|---|---|
| 백준 10876 중복 빼고 정렬하기 (0) | 2024.01.20 |
| 백준 1026 보물 (0) | 2024.01.20 |
| 백준 2805 나무 자르기 (0) | 2024.01.20 |
| 백준 1260 DFS와 BFS (0) | 2024.01.19 |