[이코테] 정렬_성적이 낮은 순서로 학생 출력하기 (python)

juyeon·2022년 7월 4일
0

문제

입력

2
홍길동 95
이순신 77

나의 풀이

1. 코드는 멀쩡해 보이는데, 왜 답이 틀리는지 모르겠음

n = int(input()) #n을 입력 받음
#n개의 수를 한줄씩 입력 받아 list 생성
score = list(input().split() for _ in range(n))

#문자형으로 되어있는 점수를 정수형으로 변환
for i in range(n):
    score[i][1] = int(score[i][1])
    
#score을 dictionary로 변환한 후, value를 기준으로 정렬하여 key값만 얻어냄(lambda 사용: [1]번째 인덱스만 얻어내도록)
result = sorted(dict(score), key = lambda x: x[1])

#unpacking 하여 출력
print(*result)

#출력
홍길동 이순신

: 아무래도, value 값 정렬이 아니라 key 기준으로 정렬되어서 출력되는듯. key = lambda x: x[1] 해줬는데도 왜 key 기준으로 정렬된거지....? 알 수가 없음 ㅠㅠ

2. 성공

n = int(input()) #n을 입력 받음
#n개의 수를 한줄씩 입력 받아 list 생성
score = list(input().split() for _ in range(n))

#문자형으로 되어있는 점수를 정수형으로 변환
for i in range(n):
    score[i][1] = int(score[i][1])
    
#score을 dictionary로 변환한 후, value를 기준으로 정렬하여 key값만 얻어냄
result = sorted(dict(score), key = dict(score).get)

#unpacking 하여 출력
print(*result)

key = dict(score).get 를 알게 되었다!

profile
내 인생의 주연

0개의 댓글