(정렬) 나이순 정렬

2020. 2. 24. 18:03개발노트

이 문제의 저작권은 BAEKJOON에 있습니다.

 

https://www.acmicpc.net/problem/10814

문제는 위 링크에서 확인할 수 있습니다.

 

#나이순 정렬
import sys
temp = []
N = int(sys.stdin.readline())

for t in range(N):
    A, B = sys.stdin.readline().split()
    A = int(A)
    temp.append([A, B])

while 1:
    cnt = 100001
    point = []
    if len(temp) == 0:
        break

    for i in range(len(temp)-1, -1, -1):
        if temp[i][0] <= cnt:
            cnt = temp[i][0]
            point = temp[i]
        
    ans = map(str, temp.pop(temp.index(point)))

    print(' '.join(ans))

 

리스트에 입력받은 숫자와 이름을 넣고 리스트의 역순으로 탐색해서 가장 작은 수를 출력했습니다.

문제에서 제시된 출력 값과 같이 출력되지만 시간이 너무 오래걸려서 시간초과가 발생했습니다.

문제에서 요구하는 시간은 3초 이내입니다.

 

#나이순 정렬
import sys
N = int(sys.stdin.readline())
arr = [list(sys.stdin.readline().split()) for _ in range(N)]
arr.sort(key=lambda x: int(x[0]))
for data in arr:
   print(data[0], data[1])

람다를 사용한 정렬입니다.

key 값을 x[0]에 들어있는 나이 값을 사용합니다.