백준 10825번 문제 write-up입니다.
https://www.acmicpc.net/problem/10825
10825번: 국영수
첫째 줄에 도현이네 반의 학생의 수 N (1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 한 줄에 하나씩 각 학생의 이름, 국어, 영어, 수학 점수가 공백으로 구분해 주어진다. 점수는 1보다 크거나 같고, 1
www.acmicpc.net
정렬 기준대로 입력값을 정렬하면 됩니다.
문제에서 제시하는 정렬 기준은 다음과 같습니다.
1. 국어 점수가 감소하는 순서로
2. 국어 점수가 같으면 영어 점수가 증가하는 순서로
3. 국어 점수와 영어 점수가 같으면 수학 점수가 감소하는 순서로
4. 모든 점수가 같으면 이름이 사전 순으로 증가하는 순서로 (단, 아스키 코드에서 대문자는 소문자보다 작으므로 사전순으로 앞에 온다.)
C++의 경우 배열을 하나의 자료형으로만 만들 수 있어 처리하기가 귀찮아집니다.
따라서 이번 문제는 Python을 사용하였습니다.
sort()를 이용해 정렬 key를 기준대로 설정하면 정렬됩니다.
n = int(input())
student = []
for i in range(n):
name, kor, eng, math = input().split()
student.append([name, int(kor), int(eng), int(math)])
student.sort(key = lambda student : (-student[1], student[2], -student[3], student[0]))
for i in student:
print(i[0])
'PS > BOJ' 카테고리의 다른 글
[PS] 백준 1463번 - 1로 만들기 | Python (0) | 2023.01.11 |
---|---|
[PS] 백준 2740번 - 행렬 곱셈 | Python (0) | 2022.12.21 |
[PS] 백준 1003번 - 피보나치 함수 | C++ (0) | 2022.11.01 |
[PS] 백준 10814번 - 나이순 정렬 | C++ (0) | 2022.10.28 |
[PS] 백준 10824번 - 네 수 | C++ (0) | 2022.10.28 |
댓글