Notice
Recent Posts
Recent Comments
Link
jyamethyst21 님의 블로그
백준 11650번- '좌표 정렬하기' (PYTHON 풀이) 본문
문제:

사용자로부터 입력값을 받고 해당 수만큼 for문을 돌건데, 이때 입력받을 각 좌표를 x를 우선으로 두고 해당 쌍을 정렬시킨다.
만약 x좌표가 같으면 y좌표를 오름차순으로 정렬하면 된다.
예를 들어 3번 입력 받는데 (1,1),(3,4),(3,-3) 순으로 정렬 받았다면 x좌표만 비교했을 때 (1,1)이 가장 작으니까 해당 좌표가 첫번째로 정렬되고, 그 다음 (3,4), (3,-3)은 x좌표가 동일하니까 y좌표를 비교해서, (3,-3)의 y좌표가 더 작으니 이를 두번째로 정렬해서 최종적으로 (1,1), (3,-3), (3,4) 순으로 정렬된다.
풀이:
N = int(input())
k = []
for i in range(N):
a,b = map(int,input().split())
k.append([a,b])
for j in sorted(k, key = lambda x: (x[0], x[1])):
print(j[0], j[1])
아마도 어제 푼 문제랑 풀이가 비슷할텐데, 어제는 sorted 함수를 활용해서 lambda 함수에 나와있다시피 x[0]을 기준으로 정렬했었다.
만약 오늘 문제도 x좌표만 비교하는 것이었다면 동일한 코드가 됐을테지만, 오늘은 y좌표까지 비교해야 하기 때문에 x[1]까지도 정렬 기준을 주어야한다.
문제를 풀 때 어제 풀이를 활용하면 쉽게 풀 수 있을 것 같아 lambda에 표현식을 두 개 넣는 법을 서치해보니까 이와 같이 적으면 된다고 한다. 어제 자세하게 풀이를 해두었기 때문에 깊게 하진 않고, 표현식을 두개 적을 땐 () 안에 두 조건을 넣어야 한다는 점과 위와 같이 적을 경우, 첫 번째 조건인 x[0]을 우선으로 두고 먼저 정렬하고 그 다음에 x[1]순으로 정렬한다 정도로만 설명하겠다.
'CODING 💻' 카테고리의 다른 글
| 백준 18870번- '좌표 압축' (PYTHON 풀이) (0) | 2025.10.10 |
|---|---|
| 백준 11651번- '좌표 정렬하기 2' (PYTHON 풀이) (0) | 2025.10.09 |
| 백준 10814번- '나이순 정렬' (PYTHON 풀이) (0) | 2025.10.07 |
| 백준 19532번- '수학은 비대면강의입니다' (PYTHON 풀이) (0) | 2025.10.06 |
| 백준 2231번- '분해합' (PYTHON 풀이) (0) | 2025.10.05 |
