나이순으로 정렬하는 문제다.
문제를 제대로 읽지않아서, 5번이나 다시 제출했다.
첫번째 구성은 이전에 word 정렬문제를 구성하는것처럼 dict 형태로 해보려고 했다.
하지만 word와는 다르게, 사람은 같은 이름의 사람이 존재하고, 나이가 다를 수 있다라는 반례를 생각하지 않아서 틀렸다.
두번째 구성으로 list형태로 만들어서, age와 name 을 넘겨주는 식으로 풀이를 했는데 결과는 잘 나오는데 맞았습니다가 절대 안나오는 것이다.
스트레스 받아서 왜인지 생각하다보니, 나이는... 정수이다... 정수 input 으로 그냥 받으면 string 형으로 입력을 하게 되니까.. 절대 패스가 안된다.
age를 string으로 받고 append 할 때 int형으로 해주고 출력하니까 맞았습니다..
이 문제는 sort할 때 stability를 보장해야하는 문제인데, merge sort 같은 안정성을 보장하는 정렬을 직접 구현하여 풀 수도 있겠지만, 귀찮기 때문에 그냥 파이썬 내장 정렬함수 sorted() 를 이용해서 풀었더니 그냥 패스가 뜨길래 잘 마무리 지은 것 같다..
sorted() 함수가 어떤 알고리즘으로 sort 하는지는 잘 모르겠지만, 듣기로는 을 갖는다고 해서 직접 구현하는 것보다 이용하는게 편리할 것 같다고 생각하여, 그냥 내장함수를 이용했다.
N = int(input())
num_list = []
for i in range(N):
age, name = list(input().split(" "))
num_list.append([int(age), name])
sort_list = sorted(num_list, key= lambda x: x[0]) # age를 키로 사용하여, 정렬
for i in range(len(sort_list)):
print(sort_list[i][0], sort_list[i][1])