본문 바로가기

[BOJ] - Python

[백준] 10814 : 나이순 정렬 python

 

 

 

배열에 들어온 순서, 나이, 이름순으로 저장했고 출력도 맞게 나오는데 계속 오답 판정이 나왔다.

import sys
input=sys.stdin.readline
n=int(input())
arr=[]
for i in range(n):
    arr.append([i]+list(input().split()))
arr.sort(key=lambda x:(x[1],x[0]))
for i in arr:
    print(i[1],i[2])

그때 제출한 코드는 이건데, 나이도 str형으로 입력받아서 정렬이 제대로 되지 않은 게 문제였다.

정수 123과 13을 비교하면 123<13이지만

str '123'과 '13'을 비교하면 '123'<'13'이라는 결과가 나오기 때문이다. 

따라서 나이를 int형으로 바꾸어 배열에 추가해주니 문제가 해결됐다.

 

import sys
input=sys.stdin.readline
n=int(input())
arr=[]
for i in range(n):
    age,name = input().split()
    arr.append([i,int(age),name])
arr.sort(key=lambda x:(x[1],x[0]))
for i in arr:
    print(i[1],i[2])