[백준 10825] 국영수 파이썬

syEON·2023년 10월 29일
0

알고리즘

목록 보기
4/4

국영수

종류: 정렬

문제 출처: 국영수

⛱️ 알고리즘
1. 국어 reverse=True
2. 국어, 영어(reverse=False)
3. 국어, 영어, 수학(reverse=True)
4. 이름 아스키코드 빠른순 (reverse=False)

⛱️ 알게된 점
student를 dict로 받아도 되고 list & tuple로 받는게 편하다
reverse말고 -로 reverse 역할을 할 수 있다!!!
문자열도 sorted가 가능하다!
packing, unpacking으로 효율적으로 입력 받자!

⛱️ 개선된 코드
처음 푼 코드보다 72ms정도 속도도 개선되고 코드도 간결해졌다.

import sys
input = sys.stdin.readline
N = int(input())
arr = [] 
for _ in range(N):
    name, *scores = input().split()  #socres: list 
    arr.append((name, *map(int, scores)))   #list요소를 int로 바꾼뒤 unpacking

arr.sort(key=lambda x: (-x[1], x[2], -x[3], x[0]) )
for i in arr:
    print(i[0])
    

처음에 내가 푼 코드

import sys
input = sys.stdin.readline
N = int(input())
arr = dict()
for i in range(N):
    name, kor, eng, math = input().split()
    arr[name]=[int(kor),int(eng),int(math)]

re = sorted(arr.items(), key = lambda item: (-item[1][0],item[1][1], -item[1][2], item[0]))
print(*list(map(lambda x: x[0], re)), sep='\n')

Ref. https://wikidocs.net/205803

0개의 댓글