문제
정답 소스코드 (Python)
n=int(input())
arr=[]
for i in range(n):arr.append(list(map(int,input().split())))
result=sorted(arr,key=lambda x:(x[1],x[0]))
for ele in result:print(*ele)
풀이 (Python)
이중 배열 정렬하는 문제이다.
파이썬의 경우 sort() 함수를 사용하면, 첫 원소 즉 x좌표부터 정렬이 되기 때문에 다른 방식의 정렬이 필요한 문제이다.
Point 1) sorted / lamda
파이썬에서 sorted함수에서는 key값을 기준으로 lamda값을 정하여 정렬해 주는 편리한 라이브러리가 존재한다.
key값을 통한 정렬은 예시를 통해 학습하는 것이 빠르다.
예를 들어 이중배열 구조일 때 예시들은 다음과 같다.
- 앞 원소를 기준으로 오름차순 정리를 하는 경우
result=sorted(arr,key=lambda x:x[0])
- 앞 원소를 오름차순으로 정리한 후 뒷 원소 기준으로 오름차순 정리하는 경우
result=sorted(arr,key=lambda x:(x[0],x[1]))
- 뒷 원소를 기준으로 내림차순 정리하고, 앞 원소를 기준으로 오름차순 정리하는 경우
result=sorted(arr,key=lambda x:(-x[1],x[0]))
'Baekjoon' 카테고리의 다른 글
[백준] 4796번 캠핑 (파이썬) (1) | 2024.02.07 |
---|---|
[백준] 11399번 ATM (파이썬) (1) | 2024.02.06 |
[백준] 2750번 수 정렬하기 (파이썬) (1) | 2024.02.06 |
[백준] 13305번 주유소 (파이썬) (1) | 2024.02.06 |
[백준] 2668번 숫자고르기 (파이썬) (0) | 2024.02.06 |