백준 10825 국영수 정렬 문제 (sorted)

2022. 2. 4. 18:34파이썬/알고리즘

내가 푼 것.

import sys
input=sys.stdin.readline

N = int(input())

grades = []

for _ in range(N):
  grade = input().split()
  grade[1:] = map(int,grade[1:])
  grades.append(grade)

sorted_grades = sorted(grades,key= lambda grade : (-grade[1],grade[2],-grade[3], grade[0]))

for i in range(len(sorted_grades)):
 (lambda x : print(x[0]))(sorted_grades[i])

sorted에 key값을 넣어서 정렬해주는 것이 포인트인 문제였다.

 

잘 푼 예제

import sys
input=sys.stdin.readline

def parse_line(line):
    name, kor, eng, math = line.split(' ')
    kor, eng, math = int(kor), int(eng), int(math)
    return -kor, eng, -math, name

N = int(input())
data = [parse_line(input()) for _ in range(N)]
print(*map(lambda x:x[3], sorted(data)),sep='\n')

굳이 key값을 지정해주지 않아도 되었다. 함수로 내림차순 (큰 수에서 작은 수)는 - 를 붙여주어서 문제에서 제시한 정렬 기준으로 입력단에서 함수로 바꿔주는 모습!

반응형

'파이썬 > 알고리즘' 카테고리의 다른 글

BOJ : 10992 번 별 찍기 -17  (0) 2022.02.09
최빈값 구하기 (Collections.Counter 클래스)  (0) 2022.02.06
최소힙  (0) 2022.01.25
구현 : 문자열 압축  (0) 2022.01.05
구현 : 문자열 재정렬  (0) 2022.01.05