Algorithm (PS)

[백준] 10825 국영수 in Python + lambda 함수 정리

minjiwoo 2022. 1. 24. 00:03
728x90

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

 

10825번: 국영수

첫째 줄에 도현이네 반의 학생의 수 N (1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 한 줄에 하나씩 각 학생의 이름, 국어, 영어, 수학 점수가 공백으로 구분해 주어진다. 점수는 1보다 크거나 같고, 1

www.acmicpc.net


n = int(input())
a = []
for i in range(n):
    a.append(input().split())
a.sort(key=lambda x:(-int(a[1]), int(a[2]), -int(a[3]), a[0]))
for i in a:
    print(i[0])

 

lambda 함수 는 익명함수 ! 즉 이름이 없는 함수이다. runtime에 생성해서 사용할 수 있는 익명 함수이다. 

sort() 함수와 종종 같이 사용되는 걸 볼수 있는데, list.sort() 는 key parameter가 있다.

key parameter를 통해서 함수를 커스텀(혹은 구체화)하여 사용할 수 있는 것이다. 

 

즉, key 다음에 lambda 함수를 써주어서 sort() 함수를 커스텀한것읻자.

또 다른예로, sorted()에서의 key parameter에 다른 함수를 넣어보자 


print(sorted("bear cat apple".split(), key=str.lower))

<출력>

['apple', 'bear', 'cat']

다음과 같이 알파벳 순으로 잘 정렬된 것을 확인 할 수 있다. 

형식은 다음과 같다. 

lambda 매개변수 : 표현식

# 일반 함수
def add(x, y):
    return x+y

print(add(10,20))

# 람다 형식 함수 
print((lambda x,y: x+y)(10,20))
728x90