배열에 들어온 순서, 나이, 이름순으로 저장했고 출력도 맞게 나오는데 계속 오답 판정이 나왔다.
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])
'[BOJ] - Python' 카테고리의 다른 글
[백준] 18870 : 좌표 압축 python (0) | 2023.08.29 |
---|---|
[백준] 단계별로 풀어보기 - 정렬 2750, 2587, 25305, 2751, 10989, 1427, 11650, 11651 python (0) | 2023.08.29 |
[백준] 1181 : 단어 정렬 (0) | 2023.08.29 |
[백준] 10971 : 외판원 순회 2 python (0) | 2023.08.27 |
[백준] 1697 : 숨바꼭질 python (0) | 2023.08.26 |