문제
2차원 평면 위의 점 N개가 주어진다. 좌표를 y좌표가 증가하는 순으로, y좌표가 같으면 x좌표가 증가하는 순서로 정렬한 다음 출력하는 프로그램을 작성하시오.
입력
첫째 줄에 점의 개수 N (1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 N개의 줄에는 i번점의 위치 xi와 yi가 주어진다. (-100,000 ≤ xi, yi ≤ 100,000) 좌표는 항상 정수이고, 위치가 같은 두 점은 없다.
출력
첫째 줄부터 N개의 줄에 점을 정렬한 결과를 출력한다.
예제 입력 1
5
0 4
1 2
1 -1
2 2
3 3
예제 출력 1
1 -1
1 2
2 2
3 3
0 4
이 문제는 sorted 함수와 lambda 함수를 활용하여 간단하게 해결한 문제였습니다.
lambda 함수는 짧은 함수(리턴 값을 받는 정도의 함수)일 경우 한 줄 작성으로 기능이 되는 함수입니다. 이를 익혀두시면 활용하기 좋습니다. .sort()함수는 내부 값을 바꿔버리지만 sorted 함수를 활용하면 변환된 정렬로 이뤄진 값을 리턴해줍니다. 즉, 기존 데이터를 변경하지 않고 새롭게 가공한 데이터를 받는다고 생각하면 됩니다
import sys
N = int(input())
problem = []
for _ in range(N):
problem.append([*map(int,sys.stdin.readline().strip().split())])
V = sorted(problem, key= lambda X:(X[1],X[0]))
for i in V:
print(i[0],i[1])
'알고리즘 > 문제풀이' 카테고리의 다른 글
백준 2108번 통계학 - Python (0) | 2023.03.07 |
---|---|
백준 4949번 균형잡힌 세상 - Python (0) | 2023.03.06 |
백준 1966번 프린터 큐 - Python (0) | 2023.03.04 |
백준 2775번 부녀회장이 될테야 - Python (0) | 2023.03.04 |
백준 1874번 스택 수열 - Python (0) | 2023.03.03 |