코딩테스트/백준 주제별
[백준 정렬] 10825 국영수
scone
2022. 7. 10. 14:23
🥕 [ 백준 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를 이용한 함수가 들어갈 수 있다.
이를 이용해 정렬 기준을 마음대로 정할 수 있다.