[파이썬] 백준 10825 : 국영수

asaei623·2023년 1월 27일
0

[Algorithm] 정렬

목록 보기
4/6

백준 10825 : 국영수 바로가기

😎 람다 함수

람다(lambda)함수란?

함수를 간결하게 정의하기 위해 사용된다. 기본적으로 이름이 없이 생성되어 익명 함수로도 불리며, 주로 일회성으로 사용한다.

 # 기존 함수 작성 방식
 def func1(x):
 	return 2*x
 
 # 람다 함수 작성 방식
 lambda x:2*x
 
 # 물론 원하면 이름을 줄 수도 있습니다.
 func2 = lambda x:2*x

sort(), sorted()

정렬 함수 사용시 key값에 람다 함수를 전달하면,

  • 원하는 요소를 기준으로 정렬
  • 여러 요소를 기준으로 정렬
  • 내림차순, 오름차순 정렬

을 쉽게 구현할 수 있다.


다음의 리스트를 예시로 설명하겠다.

arr = [["pineapple", 1000], ["banana", 800], ["mango", 800], ["kiwi", 900]]

위의 리스트를

1. 가격이 증가하는 순서로
2. 글자 수가 감소하는 순서로 

정렬하려면

arr.sort(key=lambda x:(x[1], -len(x[0])))

위와 같은 코드가 필요하다.

내림차순의 경우 간단하게 -를 붙임으로서 음수로 만들어 대소 관계를 뒤집어 줄 수 있다.

✏️ 풀이

람다 함수를 사용하여 간단히 풀어줄 수 있다.

import sys

# 입력
n = int(input())
students = [list(sys.stdin.readline().split()) for _ in range(n)]

# 정렬
students.sort(key=lambda x: (-int(x[1]), int(x[2]), -int(x[3]), x[0]))

# 출력
for student in students:
    sys.stdout.write(str(student[0]) + "\n")

출처
https://diamond-drum-0d1.notion.site/7b889a419edc4a93b55986ca93877e2f

0개의 댓글