[Python] 백준10814 나이순 정렬
문제
예제 입력
코드
import sys
n = int(sys.stdin.readline())
arr = []
for i in range(n):
a, b = sys.stdin.readline().split()
arr.append([int(a), b])
arr.sort(key = lambda item : item[0])
for mem in arr:
print(mem[0], mem[1])
설명
파이썬을 통해서 사용자로부터 입력받아 리스트를 활용하여 [0] : 나이 / [1] : 이름 중에서 sort()함수로 나이순으로 정렬했습니다. 여기서 중요한 것은 stable 정렬과 unstable 정렬 방식입니다.
stable 정렬은 말 그대로 안정 정렬입니다. 안정 정렬에서는 입력 받은 값들 중에 같은 값이 있는 경우 해당 값의 순서를 그대로 유지합니다. unstalbe 정렬에서는 이러한 정렬을 장담할 수 없습니다. 파이썬은 기본적으로 stalbe 정렬을 한다는 점
을 알아두면 좋습니다.
정리
import sys
n = int(sys.stdin.readline())
arr = {}
for i in range(n):
a, b = sys.stdin.readline().split()
arr[b] = int(a)
for key, val in sorted(arr.items(), key = lambda item : item[1], reverse=False):
print(val, key)
처음에 풀었던 방식은 사용자로부터 입력받아 딕셔너리에 key를 이름으로 담았는데 이렇게 사용하면 동명인과 구별이 안돼서 틀렸습니다.