728x90

처음 이 문제를 보면 sorted를 사용하고 key 값으로 x[0]과 index(x)를 사용하면 되겠다고 생각했다.


그러나 이 경우에는 시간 초과가 나게 된다.


파이썬에서는 정렬 시 같은 값이 나올 경우 배열의 인덱스, 즉 먼저 입력된 원소가 먼저 정렬되게 되므로 x[0]만 정렬하면 풀 수 있는 문제이다.


또한 key = lambda x : x[0]을 사용하면 오답 처리가 되고, key = lambda x : int(x[0])으로 해야 정답이 된다. 


(아스키코드값에 의해서 int형이 아니어도 된다고 생각했지만, 오답으로 처리되었음....)





다른 블로그나 사람들의 풀이를 보면 '튜플'을 사용해야 정렬이 된다 하지만....


그건 누군가 그냥 튜플을 사용해서 풀이한 문제를 보고 잘못 알고 사용한 것 같다.


이 경우에는 튜플과 리스트 상관없이 같은 방식으로 정렬이 된다.






1
2
3
4
5
6
7
8
9
10
11
12
import sys
 
= int(sys.stdin.readline())
arr = []
 
for _ in range(n):
    arr.append(sys.stdin.readline().split())
 
arr.sort(key = lambda x : int(x[0]))
 
for age, name in arr:
    print(age, name)
cs



간단하게 입력받고, sort 함수를 사용해서 정렬 후 출력하면 된다.


앞에서 말했지만, 튜플을 사용할 필요 없이... 리스트도 같은 결과를 얻을 수 있으며 key 값에서 int형으로 정렬하도록 하면 된다.


728x90