알고리즘/이코테 실전문제

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

개발윗미 2021. 8. 25. 18:47

[문제]

N명의 학생 정보가 있다. 학생 정보는 학생의 이름과 학생의 성적으로 구분된다. 각 학생의 이름과 성적 정보가

 

주어졌을 때 성적이 낮은 순서대로 학생의 이름을 출력하는 프로그램을 작성하시오.

 

[입력 조건]

1. 첫 번째 줄에 학생의 수 N이 입력된다. (1<= N <= 100,000)

 

2. 두 번째 줄부터 N + 1번째 줄에는 학생의 이름을 나타내는 문자열 A와 학생의 성적을 나타내는 정수 B가

 

   공백으로 구번되어 입력된다. 문자열 A의 길이와 학생의 성적은 100 이하의 자연수이다.

 

[출력 조건]

모든 학생의 이름을 성적이 낮은 순서대로 출력한다. 성적이 동일한 학생들의 순서는 자유롭게 출력해도 괜찮다.

<입력 예시>
2
홍길동 95
이순신 77
<출력 예시>
이순신 홍길동

 

[풀이]

n = int(input())
arr = []

for i in range(n) :
  data = input().split()
  arr.append((data[0], int(data[1])))

result = sorted(arr, key=lambda score: score[1])

for score in result :
  print(score[0], end= ' ')

 

입력된 N명의 학생 정보를 입력받아 리스트에 저장하는데, 첫번째 원소에 해당하는 이름은 문자열 그대로 저장하고

 

두번째 원소에 해당하는 점수값은 정수형으로 변환하여 저장하도록 한다.

 

정렬을 수행할 때는 키(Key)를 이용하여 점수를 기준으로 정렬한다.

 

최종적으로 정렬이 수행된 결과를 출력한다.

 


출처

이것이 코딩 테스트다 with 파이썬 - 나동빈 저