[Python] 백준10814 나이순 정렬

[Python] 백준10814 나이순 정렬

백준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를 이름으로 담았는데 이렇게 사용하면 동명인과 구별이 안돼서 틀렸습니다.


결과

결과


© 2022. All rights reserved. 신동민의 블로그