매일 매일 성장하는 섭섭군

[Seop's의 코드풀이] Back_Joon 10825 국영수 , Python 본문

알고리즘 문제풀이/백준

[Seop's의 코드풀이] Back_Joon 10825 국영수 , Python

섭섭군 2020. 4. 21. 09:56
반응형

이번 문제는 백준 10825 국영수 라는 문제입니다.

 

정렬 알고리즘에 분류된 문제로 여러개의 조건으로 정렬을 진해하는 것이 최종 목표입니다.

 

문제의 내용과 입출력은 다음과 같습니다.

 

 

 

문제를 보면 정렬을 해야 하는 조건이 4가지가 있는데요 간략하게 요약해보면 

 

1.  국어점수 내림차순

2. 영어점수 오름차순

3. 수학점수 내림차순

4. 이름 오름차순

 

저는 이 문제를 python 의 lambda를 활용해서 정렬하였습니다.

 

학생정보가 들어갈 배열을 하나 생성한 다음에 입력들어온 순서대로 저장합니다.

2차원 배열의 형태로 만들어지게 되며 이를 위에 명시된 기준대로 정렬합니다.

 

python 내에서 lambda 로 정렬 조건을 추가할 때 내림차순으로 정렬하고자 할때에는 - 를 붙이면 됩니다.

그렇다면 위의 조건은 다음과 같이 명시 될 것 입니다.

 

sorted(student, key= lambda x: ( -int(x[1]), int(x[2]), -int(x[3]), x[0] ) )

 

이렇게 정렬을 했다면 출력을 하면 끝입니다.

 

전체 코드는 다음과 같습니다. 다음 포스팅에서 뵙도록 하겠습니다.

 

import sys
input = sys.stdin.readline

N = int(input())
student = []
for _ in range(N) :
    buf = list(map(str, input().rstrip().split(" ")))
    student.append(buf)
student = sorted(student, key= lambda x: ( -int(x[1]), int(x[2]), -int(x[3]), x[0] ) ) 

for i in student :
    print(i[0])

 

 

반응형
Comments