반응형
https://www.acmicpc.net/problem/11651
문제
2차원 평면 위의 점 N개가 주어진다. 좌표를 y좌표가 증가하는 순으로, y좌표가 같으면 x좌표가 증가하는 순서로 정렬한 다음 출력하는 프로그램을 작성하시오.
입력
첫째 줄에 점의 개수 N (1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 N개의 줄에는 i번점의 위치 xi와 yi가 주어진다. (-100,000 ≤ xi, yi ≤ 100,000) 좌표는 항상 정수이고, 위치가 같은 두 점은 없다.
출력
첫째 줄부터 N개의 줄에 점을 정렬한 결과를 출력한다.
풀이
보자마자 아! 이건 람다 식으로 풀어야겠다! 하는 생각이 들었던 문제
y 좌표가 증가하는 순으로 정렬 후 y 좌표가 같다면 x 좌표 증가 순이지만 실제로 문제를 풀때는 미리 x 좌표를 정렬시켜둔 후 y 좌표 순으로 정렬을 했다.
문제를 푸는 방법에 도달하는 데에는 시간이 별로 걸리지 않았지만, 람다 식을 별로 써본 적이 없어 람다식 사용법 자체는 검색해봐야 했다ㅠ
그냥 input()을 사용하면 시간초과에 걸리는데 그건 sys.stdin.readline()으로 쉽게 해결 가능했다.
python 코드
# 11651 좌표 정렬하기 2
import sys
N = int(sys.stdin.readline())
arr = []
for tc in range(N):
arr.append(list(map(int,sys.stdin.readline().split())))
arr.sort(key=lambda x:(x[0]))
arr.sort(key=lambda x:(x[1]))
for i in range(N):
print(*arr[i])
반응형
'study > 백준' 카테고리의 다른 글
[백준] 1920. 수 찾기 : python (0) | 2022.08.04 |
---|---|
[백준] 5430. AC : python (0) | 2022.07.31 |
[백준] 11659. 구간 합 구하기 4 : python (0) | 2022.07.30 |
[백준] 11727. 2xn 타일링 2 : python (0) | 2022.07.28 |
[백준] 2630. 색종이 만들기 : python (0) | 2022.07.27 |