파이썬 백준 10825번
실버4
https://www.acmicpc.net/problem/10825
10825번: 국영수
첫째 줄에 도현이네 반의 학생의 수 N (1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 한 줄에 하나씩 각 학생의 이름, 국어, 영어, 수학 점수가 공백으로 구분해 주어진다. 점수는 1보다 크거나 같고, 1
www.acmicpc.net
문제 보기

분류: 정렬
문제 풀기
sort() 함수와 lambda 를 이용하여 한 줄로 작성을 하려 했는데 생각처럼 되지 않았다.
아니 다시 해보니 생각대로 된다. 답안은 이미 제출했는데.. 맥주의 힘인가..
괄호를 치는데 잘못됨이 있었다 더 공부하자
문제에서 제시한 조건 1. 2. 3. 4. 순서를 보면 순차적으로 다음 조건을 제시하는데 이는 이름이 제일 중요도가 낮음이 된다. 따라서 제일 중요도가 낮은 이름으로 먼저 정렬을 한 후, 수학, 영어 그리고 국어로 정렬을 진행한다.
이때, 이름은 사전 순이기에 오름차순, 수학은 감소하는 순서인 내림차순, 영어는 오름차순 그리고 국어는 내림차순으로 정렬을 한다.
입력은 grade_ls 리스트에 모두 string 으로 입력을 받고 정렬을 하는 과정에서 integer 로 변환하여 정렬을 한다.
grade_ls.sort(key = lambda x: (-int(x[1]), int(x[2]), -int(x[3]), str(x[0])))
코드 보기
import sys inputdata = sys.stdin.readline def fnSortGrades(): grade_ls.sort(key = lambda x: (-int(x[1]), int(x[2]), -int(x[3]), str(x[0]))) # print(grade_ls) # test print return grade_ls if __name__ == "__main__": N = int(inputdata().strip()) grade_ls = [list(map(str, inputdata().split())) for _ in range(N)] # print(grade_ls) # test print result = fnSortGrades() for res in result: print(res[0])
추가 하기
처음 제출한 코드
import sys inputdata = sys.stdin.readline def fnSortGrades(): grade_ls.sort(key = lambda x: str(x[0])) print(grade_ls) # test print grade_ls.sort(key = lambda x: int(x[3]), reverse = True) print(grade_ls) # test print grade_ls.sort(key = lambda x: int(x[2])) print(grade_ls) # test print grade_ls.sort(key = lambda x: int(x[1]), reverse = True) print(grade_ls) # test print return grade_ls if __name__ == "__main__": N = int(inputdata().strip()) grade_ls = [list(map(str, inputdata().split())) for _ in range(N)] print(grade_ls) # test print result = fnSortGrades() for res in result: print(res[0]) # 12 # Junkyu 50 60 100 # Sangkeun 80 60 50 # Sunyoung 80 70 100 # Soong 50 60 90 # Haebin 50 60 100 # Kangsoo 60 80 100 # Donghyuk 80 60 100 # Sei 70 70 70 # Wonseob 70 70 90 # Sanghyun 70 70 80 # nsj 80 80 80 # Taewhan 50 60 90 # [['Junkyu', '50', '60', '100'], ['Sangkeun', '80', '60', '50'], ['Sunyoung', '80', '70', '100'], ['Soong', '50', '60', '90'], ['Haebin', '50', '60', '100'], ['Kangsoo', '60', '80', '100'], ['Donghyuk', '80', '60', '100'], ['Sei', '70', '70', '70'], ['Wonseob', '70', '70', '90'], ['Sanghyun', '70', '70', '80'], ['nsj', '80', '80', '80'], ['Taewhan', '50', '60', '90']] # [['Donghyuk', '80', '60', '100'], ['Haebin', '50', '60', '100'], ['Junkyu', '50', '60', '100'], ['Kangsoo', '60', '80', '100'], ['Sanghyun', '70', '70', '80'], ['Sangkeun', '80', '60', '50'], ['Sei', '70', '70', '70'], ['Soong', '50', '60', '90'], ['Sunyoung', '80', '70', '100'], ['Taewhan', '50', '60', '90'], ['Wonseob', '70', '70', '90'], ['nsj', '80', '80', '80']] # [['Donghyuk', '80', '60', '100'], ['Haebin', '50', '60', '100'], ['Junkyu', '50', '60', '100'], ['Kangsoo', '60', '80', '100'], ['Sunyoung', '80', '70', '100'], ['Soong', '50', '60', '90'], ['Taewhan', '50', '60', '90'], ['Wonseob', '70', '70', '90'], ['Sanghyun', '70', '70', '80'], ['nsj', '80', '80', '80'], ['Sei', '70', '70', '70'], ['Sangkeun', '80', '60', '50']] # [['Donghyuk', '80', '60', '100'], ['Haebin', '50', '60', '100'], ['Junkyu', '50', '60', '100'], ['Soong', '50', '60', '90'], ['Taewhan', '50', '60', '90'], ['Sangkeun', '80', '60', '50'], ['Sunyoung', '80', '70', '100'], ['Wonseob', '70', '70', '90'], ['Sanghyun', '70', '70', '80'], ['Sei', '70', '70', '70'], ['Kangsoo', '60', '80', '100'], ['nsj', '80', '80', '80']] # [['Donghyuk', '80', '60', '100'], ['Sangkeun', '80', '60', '50'], ['Sunyoung', '80', '70', '100'], ['nsj', '80', '80', '80'], ['Wonseob', '70', '70', '90'], ['Sanghyun', '70', '70', '80'], ['Sei', '70', '70', '70'], ['Kangsoo', '60', '80', '100'], ['Haebin', '50', '60', '100'], ['Junkyu', '50', '60', '100'], ['Soong', '50', '60', '90'], ['Taewhan', '50', '60', '90']] # Donghyuk # Sangkeun # Sunyoung # nsj # Wonseob # Sanghyun # Sei # Kangsoo # Haebin # Junkyu # Soong # Taewhan
'공부하기 > 백준' 카테고리의 다른 글
[Python] 백준 풀기 1026 - 보물 (0) | 2022.12.05 |
---|---|
[Python] 백준 풀기 2167 - 2차원 배열의 합 (1) | 2022.12.04 |
[Python] 백준 풀기 1476 - 날짜 계산 (0) | 2022.12.01 |
[Python] 백준 풀기 4963 - 섬의 개수 (0) | 2022.11.30 |
[Python] 백준 풀기 7576 - 토마토 (0) | 2022.11.29 |