728x90
[백준] 10825번 : 국영수
10825번: 국영수
첫째 줄에 도현이네 반의 학생의 수 N (1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 한 줄에 하나씩 각 학생의 이름, 국어, 영어, 수학 점수가 공백으로 구분해 주어진다. 점수는 1보다 크거나 같고, 1
www.acmicpc.net
📄 문제개요
- 학생들의 이름과, 국어, 영어, 수학 점수가 주어졌을때, 다음과 같은 조건으로 성적을 정렬하는 프로그램을 작성하세요.
- 국어가 감소하는 순서로
- 국어 점수가 같으면 영어 점수가 증가하는 순서로
- 국어 점수와 영어점수가 같으면 수학점수가 감소하는 순서로
- 모든 점수가 같으면 사전 순으로 증가하는 순서로 (단, 아스키코드에서 대문자는 소문자보다 작으므로 사전 순으로 앞에 옵니다. )
🤔 문제분석
- 정렬 문제로 파이썬 내장함수인 sort()를 사용하여 key= lamda 함수를 활용하여 정렬 조건을 걸어준다.
- 국어는 내림차순, 영어는 오름차순, 수학은 내림차순, 사전순 오름차순
📝 의사코드
- lamda함수를 이용하여 주어진 조건을 정렬합니다.
💻 코드
import sys
input = sys.stdin.readline
N = int(input())
student = []
for _ in range(N):
temp = list(input().split())
for i in range(1, len(temp)):
temp[i] = int(temp[i])
student.append(temp)
student.sort(key=lambda x : ((-x[1], x[2], -x[3], x[0])))
for s in student:
print(s[0])
🎯 피드백 및 개선사항
- 없음
❓다른사람은 어떻게 풀었을까?
- 없음
728x90
'알고리즘 > 백준' 카테고리의 다른 글
[백준] 2866번 : 문자열 잘라내기 (0) | 2023.11.19 |
---|---|
[백준] 1920번 : 수 찾기 (1) | 2023.11.18 |
[백준] 7453번 : 합이 0인 네 정수 (1) | 2023.11.18 |
[백준] 20058번 : 마법사 상어와 파이어스톰 (1) | 2023.11.06 |
[백준] 2533번 : 사회망 서비스(SNS) (0) | 2023.10.21 |