[Python]BaekJoon.AC

[Python]백준 BaekJoon.AC 10814 : 나이순 정렬(list, sort())

스뇨잉 2022. 1. 13. 19:06
728x90
728x90

 

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

 

10814번: 나이순 정렬

온라인 저지에 가입한 사람들의 나이와 이름이 가입한 순서대로 주어진다. 이때, 회원들을 나이가 증가하는 순으로, 나이가 같으면 먼저 가입한 사람이 앞에 오는 순서로 정렬하는 프로그램을

www.acmicpc.net

 

 

크게 어려운 점은 없는 무난한 list 문제였다.

다만 age를 int 취급해줘야 하는 점 잊지 않아야겠다.

 

 

 

<추천하지 않음>

더보기
N = int(input())
mem = []

for i in range(N):
    age, name = input().split()
    mem.append([])
    mem[i].append(i)
    mem[i].append(int(age))
    mem[i].append(name)

mem.sort(key=lambda x : (x[1], x[0]))

for m in mem:
    print(m[1], m[2])

 

 

위 코드도 정답처리 되는데, 시간이 정말 많이 걸린다는 단점이 있었다.

그래서 sys를 이용해 입력을 받았더니 놀라운 결과를 받았다.

 

 

 

 

밑채점 결과는 앞서 올린 코드를 제출한 결과이고, 윗채점 결과는 아래 올릴 코드를 제출한 결과이다.

(아주 조금이긴 하지만) 코드 길이가 늘어났음에도 시간이.. 원래 시간의 10%도 안걸렸다.

input이 많이 느리긴 한가 싶다. 아래 코드를 추천한다.

 

 

 

import sys

N = int(input())
mem = []

for i in range(N):
    age, name = sys.stdin.readline().split()
    mem.append([])
    mem[i].append(i)
    mem[i].append(int(age))
    mem[i].append(name)

mem.sort(key=lambda x : (x[1], x[0]))

for m in mem:
    print(m[1], m[2])

 

 

728x90
728x90