본문 바로가기

알고리즘_파이썬

백준 11651 좌표 정렬하기2

 

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