알고리즘
[파이썬] 단계별 백준 문제 풀기 - 11651 정렬 (좌표정렬하기 2)
햄❤️
2021. 3. 10. 01:15
반응형
문제
2차원 평면 위의 점 N개가 주어진다. 좌표를 y좌표가 증가하는 순으로, y좌표가 같으면 x좌표가 증가하는 순서로 정렬한 다음 출력하는 프로그램을 작성하시오.
입력
첫째 줄에 점의 개수 N (1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 N개의 줄에는 i번점의 위치 xi와 yi가 주어진다. (-100,000 ≤ xi, yi ≤ 100,000) 좌표는 항상 정수이고, 위치가 같은 두 점은 없다.
출력
첫째 줄부터 N개의 줄에 점을 정렬한 결과를 출력한다.
<<코드>>
import sys #시간을 줄이기 위해 sys 모듈을 import하고 input값을 sys.stdin.readlind()으로 받음
n = int(input()) #첫째줄 점의 갯수
arr = [] # 점의 좌표들을 넣을 빈 리스트 생성
# 점의 갯수만큼 for문 실행
for i in range(n):
line = list(map(int,sys.stdin.readline().split()))
arr.append(line)
#sort(오름차순 정렬) 하는데 x값은 x[1]번째(=y좌표)를 기준으로, 그 다음에 x[0]번째(=x좌표) 기준
arr.sort(key=lambda x: (x[1],x[0]))
#arr 리스트에서 0번째(x), 1번째(y) 값 순차출력
for i in arr:
print(i[0],i[1])
<<결과값>>
$ python main.py
5
0 4
1 2
1 -1
2 2
3 3
1 -1
1 2
2 2
3 3
0 4
lambda 함수를 알면 쉽게 풀 수 있다. 이 문제 덕분에 sort, lambda 함수를 공부할 수 있었다!
- sort() : 변수.sort() 형태로 사용! 정렬기준은 문자열은 알파벳,가나다 순이며 숫자는 오름차순
- sorted(): 원형을 변형시키지 않고 정렬된 결과를 반영함. * sort()는 원형을 변형시켜 정렬
- sort의 매개변수 key, key=lambda x:x[1] -> key 값을 기준으로 정렬. x가 input이고 x[1]번째 기준으로 오름차순
728x90
반응형