알고리즘/백준

백준 10814: 나이순 정렬 (Python)

sssbin 2021. 9. 15. 00:47

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

 

10814번: 나이순 정렬

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

www.acmicpc.net

 

import sys
n = int(sys.stdin.readline())
mem = []

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

mem.sort()

for i in range(n):
    print(mem[i][0], mem[i][2])

 

나이, 이름을 입력받아서 리스트에 넣어서 정렬했다

그대로 정렬하면 나이, 이름 순서대로 나오는데

문제 조건에 나이가 같으면 먼저 입력한 순서대로 출력하라고 해서 나이와 이름 사이에 순서도 같이 넣어줌!

 

근데 검색해보니까 다들 lambda를 이용해서 문제를 풀었길래 가져와봤다,,

람다는 함수의 기능을 간결하게 표현?한 것이라고 보면 된다

또 함수랑 다른 점은 쓰고 버리는 일시적인 함수라는 것!

 

lambda 인자 : 표현식

 

이런 형식으로 쓰면 된다

 

import sys
n = int(sys.stdin.readline())
mem = []

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

mem.sort(key = lambda m : m[0])	# mem(age, name)에서 첫 번째 값(age)만 비교

for i in mem:
    print(i[0], i[1])

 

이건 람다를 이용한 코드!