정렬) 국영수

Mongle·2020년 12월 4일
0

국영수

<이것이 취업을 위한 코딩테스트이다, 359p, 나동빈, 한빛미디어>

첫번째 접근

  • 정렬함수의 key옵션을 이용해서 정렬의 기준 데이터를 지정해줘야한다
  • lambda를 이용해서 함수를 간단하게 작성할 수 있다
  • 잘못된 코드
data = [['aaa', 20, 54, 75], ['bbb', 88, 64, 21], ['ccc', 55, 66, 45]]
korean = []
for i in range(len(data)):
    korean = sorted(data, key=lambda data, i: data[i][1])
print(korean)

lambda 함수를 인식하지 못한다.


두번째 접근

  • 튜플을 원소로하는 리스트의 경우, 정렬하면 튜플의 (기준)첫번째 원소 -> (첫번째 기준이 같으면)두번째 원소 -> 세번째 원소 ... 순서대로 정렬된다.
  • 람다의 활용
lambda x: (-int(x[1]), int(x[2]), -int(x[3]), x[0])

이런식으로 리스트 내부의 튜플 데이터를 조작한 후 key값으로 사용할 수 있다.

  • 수정된 코드
# 학생의 수 입력
N = int(input("N >> "))

# 학생의 이름과 점수 데이터 입력, 리스트 안에 튜플로 저장
data = []
for i in range(N):
    data.append(input("data >> ").split())

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

print(data)
profile
https://github.com/Jeongseo21

0개의 댓글

관련 채용 정보