본문 바로가기

알고리즘/백준

[백준] 10825번 : 국영수

728x90

[백준] 10825번 : 국영수

10825번: 국영수

 

10825번: 국영수

첫째 줄에 도현이네 반의 학생의 수 N (1 ≤ N ≤ 100,000)이 주어진다. 둘째 줄부터 한 줄에 하나씩 각 학생의 이름, 국어, 영어, 수학 점수가 공백으로 구분해 주어진다. 점수는 1보다 크거나 같고, 1

www.acmicpc.net

📄 문제개요

  • 학생들의 이름과, 국어, 영어, 수학 점수가 주어졌을때, 다음과 같은 조건으로 성적을 정렬하는 프로그램을 작성하세요.
    1. 국어가 감소하는 순서로
    2. 국어 점수가 같으면 영어 점수가 증가하는 순서로
    3. 국어 점수와 영어점수가 같으면 수학점수가 감소하는 순서로
    4. 모든 점수가 같으면 사전 순으로 증가하는 순서로 (단, 아스키코드에서 대문자는 소문자보다 작으므로 사전 순으로 앞에 옵니다. )

🤔 문제분석

  • 정렬 문제로 파이썬 내장함수인 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