incastle의 콩나물

[알고리즘] 백준 1427번, 나이순 정렬 , 정렬, python(20) 본문

python/알고리즘

[알고리즘] 백준 1427번, 나이순 정렬 , 정렬, python(20)

incastle 2020. 3. 10. 14:50

짜잔~ 오랜만에 돌아왔다 알고리즘!

 

재미없는 알고리즘이지만.. 오늘부터 다시 차근차근 공부해보도록하자. 

 

문제

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

 

 

풀이

n = int(input())
mb = []
for i in range(n):
    tmp = input().split(' ')
    mb.append(tmp)
mb = sorted(mb, key= lambda mb: int(mb[0]))
for i in mb:
    print(i[0],i[1])    

 

가벼운 문제로 풀이 ~ 맞췄는데 궁금한 게 있어서 좀 더 탐색해봤다.

 

 

1. sort vs sorted

쉽게 생각하면 복사본을 만들어 정렬하는 것과, 원본을 정렬하는 것의 차이다. 

sorted는 복사본을 만들고, sort는 원본을 정렬한다. 

일단은 sorted가 더 빨랐다. 

 

 

2. sys 사용

나는 잘 사용하지 않는 방법인데 import sys을 사용해서 값을 입력 받는 풀이들이 종종 있다.

import sys
n = int(sys.stdin.readline())
mb = []
for i in range(n):
    mb.append(list(sys.stdin.readline().split()))
mb.sort(key=lambda x: int(x[0]))    
for i in mb:
    print(i[0],i[1])    

이런 느낌인데. 성능 차이는 아래와 같다. 

 

 

너무 압도적이어서 sys로 입력 받아야 할 거 같은 느낌?

https://www.acmicpc.net/board/view/855

 

글 읽기 - 2010번 시간초과 질문입니다.ㅠㅠ (python)

댓글을 작성하려면 로그인해야 합니다.

www.acmicpc.net

자세한 내용은 위 링크를 참고하자!

 

 

** 만약에 정렬을 한 번 하는 게 아니라 두 번 한다면(2020.04.12 업데이트)

 sorted(xy, key= lambda xy: (xy[0], xy[1]))

 

Comments