개발 연습장/백준 문제풀이

[파이썬, Python] 백준 10814: 나이순 정렬

LooanCheong 2023. 1. 10. 14:06
반응형

문제

https://www.acmicpc.net/problem/10814

 

10814번: 나이순 정렬

온라인 저지에 가입한 사람들의 나이와 이름이 가입한 순서대로 주어진다. 이때, 회원들을 나이가 증가하는 순으로, 나이가 같으면 먼저 가입한 사람이 앞에 오는 순서로 정렬하는 프로그램을

www.acmicpc.net

코드

import sys

n = int(sys.stdin.readline())
people_list = []

for _ in range(n):
    age, name = sys.stdin.readline().rstrip().split()
    age = int(age)
    people_list.append((age, name))

people_list.sort(key = lambda x: x[0])

for i in people_list:
    print(i[0], i[1])

설명

문제의 설명에 보면 안정 정렬을 이용한다고 나와있는데,

안정 정렬이란?
같은 값을 같는 record가 여러 개 존재할 때, 원래의 정렬을 보장하는 정렬

불안정 정렬이란?
원래의 정렬을 보장하지 않는 정렬

따라서 이 문제의 경우에는 나이순으로 정렬을 하고,
나이가 같을 때는 기본 입력 순서인 가입 순서로 정렬을 해야한다.

파이썬의 경우 sort를 통해 정렬하게 되면 순서가 바뀌지 않고 정렬이 된다.
기본적으로 sort가 안정정렬의 속성을 갖고 있기 때문이다.

따라서 입력값을 받아주고 나이, 이름 순으로 리스트에 추가한 다음,
key를 사용하여 나이를 통해 정렬을 하게 해준다.

이후 출력하면 된다.

반응형