incastle의 콩나물
[알고리즘] 백준 1427번, 나이순 정렬 , 정렬, python(20) 본문
짜잔~ 오랜만에 돌아왔다 알고리즘!
재미없는 알고리즘이지만.. 오늘부터 다시 차근차근 공부해보도록하자.
문제
온라인 저지에 가입한 사람들의 나이와 이름이 가입한 순서대로 주어진다. 이때, 회원들을 나이가 증가하는 순으로, 나이가 같으면 먼저 가입한 사람이 앞에 오는 순서로 정렬하는 프로그램을 작성하시오.
풀이
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
자세한 내용은 위 링크를 참고하자!
** 만약에 정렬을 한 번 하는 게 아니라 두 번 한다면(2020.04.12 업데이트)
sorted(xy, key= lambda xy: (xy[0], xy[1]))
'python > 알고리즘' 카테고리의 다른 글
[알고리즘] 백준 5397번, 키로거 , 스택 , python(22) (0) | 2020.04.05 |
---|---|
[알고리즘] 백준 1966번, 프린터 큐, 정렬, python(21) (0) | 2020.04.05 |
코딩 테스트 준비 잡다 팁 (0) | 2019.04.26 |
[알고리즘] 백준 1427번, 소트인사이드 , 정렬하기, python(19) (0) | 2019.04.15 |
[알고리즘] 빠르게 산 오르기, 최적 부분 문제+ greedy, python(18) (0) | 2019.04.15 |
Comments