🥕 [ 백준 10825 ] 국영수
문제 링크
url : https://www.acmicpc.net/problem/10825
🍒 문제 분석
1. 국어 점수는 감소하는 순서로
2. 국어 점수가 같으면 영어 점수가 증가하는 순서로
3. 국어 점수와 영어 점수가 같으면 수학 점수가 감소하는 추세로
4. 모든 점수가 같으면 이름 사전 순
🥑 코드
N = int(input())
mylist = []
for _ in range(N):
name, kor, eng, mat = input().split()
# 국어는 감수하는 순서로
kor = -int(kor)
# 영어는 증가하는 순서로
eng = int(eng)
# 수학은 감소하는 순서로
mat = -int(mat)
mylist.append([kor,eng,mat,name])
mylist.sort()
for i in mylist:
print(i[3])
🍓 내 해결 과정
문제에서 나온 조건을 사용하여 고민없이 매우 간단하게 풀었다.
🌽 다른 사람 코드
N = int(input())
mylist = []
for _ in range(N):
# 이름, 국어, 영어, 수학
mylist.append(input().split())
mylist.sort(key = lambda x : (-int(x[1]), int(x[2]), -int(x[3]), x[0]) )
for i in mylist:
print(i[0])
팀원분께서 sort 함수의 매개변수 가운데 key 라는게 있다는걸 알려주셨는데 완전 잊고 있었다.
🍉 깨달은 점 및 정리
sort 함수에는 key 라는 매개변수가 있다.
key 에는 lambda를 이용한 함수가 들어갈 수 있다.
이를 이용해 정렬 기준을 마음대로 정할 수 있다.
'코딩테스트 > 백준 주제별' 카테고리의 다른 글
[백준 이진탐색] 2850 나무 자르기 (0) | 2022.07.18 |
---|---|
[백준 그래프이론] 1600 말이 되고픈 원숭이 (0) | 2022.07.11 |
[백준 위상정렬] 2623 음악프로그램 (0) | 2022.07.04 |
[백준 플로이드-와셜 ] 11403 경로 찾기 (0) | 2022.06.22 |
[백준 DP] 2294 동전 2 (0) | 2022.06.13 |