코드

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로 리스트에 넣지 않으면 틀렸다고 한다. (주석 참고)

문제가 너무 간단하게 풀려 찾아보니 안정 정렬불안정 정렬이라는 개념을 알게 됐다.

  • 안정 정렬
    • 정렬이 완료됐을 때, 같은 키값을 가진 원소 순서가 정렬 후에도 유지되는 것을 보장
    • 삽입, 버블, 합병, 기수
  • 불안정 정렬
    • 정렬이 완료됐을 때, 같은 키값을 가진 원소 순서를 보장해주지 않음
    • 선택, 쉘, 힙, 퀵

파이썬 라이브러리 정렬은 기본적으로 안정 정렬을 보장해주기 때문에 정답으로 처리됐다.

댓글남기기