[이코테] 정렬-국영수

장우솔·2023년 2월 17일
0

알고리즘

목록 보기
9/21

문제

이름과 국어, 영어, 수학 점수가 주어지면 성적을 정렬해라

  1. 국어점수가 감소하는 순으로
  2. 국어 점수가 같으면 영어 점수가 증가하는 순으로
  3. 국어, 영어 점수가 같으면 수학점수가 감소하는 순으로
  4. 모든 점수가 같으면 사전 이름순으로 증가하는 순서로

처음에 내가 푼 코드

정수 취급안해줘서 런타임에러 떴다!!!!!!

n=int(input())
a=[]
for i in range(n):
  a.append(list(input().split()))
a=sorted(a,key=lambda x : (-x[1],x[2],-x[3],x[0]))
for i in range(len(a)):
  print(a[i][0])

이럴 땐 리스트에 담을 때 정수 취급해주거나 정렬할 때 정수 취급해주면 됨!


## 다른 코드
n = int(input())
a = []
for i in range(n):
    score = input().split()
    # 이런식으로!
    a.append((score[0], int(score[1]), int(score[2]), int(score[3])))
a=sorted(a,key=lambda x : (-x[1],x[2],-x[3],x[0]))
for i in range(len(a)):
  print(a[i][0])
n=int(input())
a=[]
for i in range(n):
  a.append(list(input().split()))
a.sort(key=lambda x : (-int(x[1]),int(x[2]),-int(x[3]),x[0]))
for i in a:
  print(i[0])
profile
공부한 것들을 정리하는 블로그

0개의 댓글