정렬) 국영수 🌙

Yona·2022년 2월 9일
0

문제

풀이

처음 든 생각

  1. 파이썬 내장 정렬함수를 못쓰게 되었으니,
    직접 퀵함수를 구현하는건가 ?

  2. 내장 정렬함수 사용해서 해도 될것 같은디..

풀이아이디어

파이썬 내장을 잘 이해하고 있어서, 적재적소에 활용할 수 있는가

튜플의 특징

튜플을 잘 사용할 수 있는가

  • 튜플을 원소로하는 리스트가 있을때, 그 리스트를 정렬하면 기본적으로 각 튜플을 구성하는 원소의 순서에 맞게 정렬된다.
    • ex) 튜플이 [(5,1,5), (3,5,5), (3,1,9)] 처럼 있으면
      첫번재 원소 값이 같은 경우 두번째 원소의 순서에 맞게 정렬되고,
      두번째 원소 값이 같은 경우 세번째 원소의 순서에 맞게 정렬된다.

sort함수의 Key 사용

sort함수의 Key를 잘 활용할 수 있는가

students.sort(key=lambda x : (-int(x[1]), int(x[2]), -int(x[3]), x[0])

는 리스트의 각 원소 (x)가 튜플 형태로 존재할때, 다음과 같은 우선순위에 맞게 정렬하겠다는 뜻이다.

  • 두번째 원소를 기준으로 내림차순 정렬 (-int(x[1])
  • 두번째 원소가 같은 경우, 세번째 원소를 기준으로 오름차순 정렬 int(x[2])
  • 세번째 원소가 같은 경우, 네 번째 원소를 기준으로 내림차순 정렬 int(x[3])
  • 네번째 원소가 같은 경우, 첫번째 원소를 기준으로 오름차순 정렬 x[0]

코드

n = int(input())
students = [] # 학생 정보를 담을 리스트

# 모든 학생 정보를 입력받기
for _ in range(n) :
	students.append(input().split())

'''
정렬기준
1) 두번째 원소를 기준으로 내림차순
2) 두번재 원소가 같은 경우, 세번째 원소를 기준으로 오름차순 정렬
3) 세번째 원소가 같은 경우, 네번째 원소를 기준으로 내림차순 정렬
4) 네번째 원소가 같은 경우, 첫번째 원소를 기준으로 오름차순
'''

# 조건에 맞게 정렬하기
students.sort(key=lambda x: (-int(x[1]), int(x[2]), -int(x[3]), x[0]))

# 정렬된 학생 정보에서 이름만 출력
for student in students :
	print(student[0])
profile
Sometimes you win, sometimes you learn 🏃‍♀️

0개의 댓글