본문 바로가기

알고리즘/python

[python/파이썬] 백준 10814 나이순 정렬

반응형

[문제 출처]

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

 

10814번: 나이순 정렬

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

www.acmicpc.net

 

 

[문제 풀이]

나이가 증가하는 순으로 정렬하고, 이름이 같을 경우 입력받은 순서를 그대로 유지하도록 해야 하는 문제이다.

파이썬 sort()를 이용했는데, 나이순으로 정렬했을 때 기존 순서가 바뀌는지 아닌지 몰라서 일단 돌려봤는데 정답이 나왔다

파이썬 sort()의 경우 같은 값에 대해서 기존 순서를 유지하는 것으로 보인다. 따라서 나이순으로 정렬하는 문제와 다르지 않게 풀 수 있다.

한 가지 신경 써야 하는 점이라면, 정수와 문자열이 같이 입력으로 들어오기에 타입을 신경 써주어야 한다.

아래 작성한 코드처럼, 문자열로 받고 정렬 시에만 형 변환해주어도 되고, 처음부터 정수형으로 바꿔서 저장해주어도 된다.

 

#10814
import sys 
input = sys.stdin.readline

n = int(input())

info = []
for i in range(n):
  info.append(list(input().split()))

info.sort(key = lambda x:int(x[0]))

for e in info:
  print(*e)

 

처음에는 readline을 사용하지 않고 제출했는데, 오래 걸리길래 시간 초과가 나올까 봐

채점 중에 readline을 추가해서 채점을 해보았다. 

다행히 2가지 코드 모두 시간 초과가 나오지 않았으나, 그냥 input()을 사용한 코드의 경우 채점이 매우 오래 걸렸다.

직접적으로 비교해보니 시간 차이가 눈에 띄게 커서 흥미로웠다.

위 : readline 사용, 아래 : input() 사용

반응형