백준 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 |