백준 10814 - 나이순 정렬 (Python3)
코드
n = int(input())
member = []
for _ in range(n):
# member.append(list(map(str, input().split())))
age, name = map(str, input().split())
age = int(age)
member.append([age, name])
member.sort(key = lambda x: x[0])
for m in member:
# print(int(m[0]), m[1])
print(m[0], m[1])
문제 해설
Lambda 함수를 사용해서 정렬만 하면 풀리는 문제이다. 이 때, 왜인지는 모르겠지만 age에 해당하는 값을 int로 리스트에 넣지 않으면 틀렸다고 한다. (주석 참고)
문제가 너무 간단하게 풀려 찾아보니 안정 정렬과 불안정 정렬이라는 개념을 알게 됐다.
- 안정 정렬
- 정렬이 완료됐을 때, 같은 키값을 가진 원소 순서가 정렬 후에도 유지되는 것을 보장
- 삽입, 버블, 합병, 기수
- 불안정 정렬
- 정렬이 완료됐을 때, 같은 키값을 가진 원소 순서를 보장해주지 않음
- 선택, 쉘, 힙, 퀵
파이썬 라이브러리 정렬은 기본적으로 안정 정렬을 보장해주기 때문에 정답으로 처리됐다.
댓글남기기