본문 바로가기

파이썬/이것이 코딩 테스트다 with 파이썬

이코테 Chapter 05 정렬 - 성적이 낮은 순서로 학생 출력하기

문제

N명의 학생의 성적 정보가 주어진다. 형식은 이름 성적 으로 주어지는데 이때 이들의 성적이 낮은 순으로 학생 이름을 출력하는 문제다.

 

입력

  • 첫 번째 줄에 학생의 수 N이 입력된다. (1 <= N <= 100,000)
  • 두 번째 줄 부터 N+1 번째 줄 까지 학생의 이름 그리고 성적이 공백으로 주어진다. 학생이름 길이는 100이하, 성적은 100이하 자연수로 주어진다.

출력

  • 모든 학생의 이름을 성적이 낮은 순으로 출력하면된다. 동일한 성적은 자유롭게 출력하면된다.
  •  

접근법 & 풀이 (의식의 흐름)

1. 일단 이름과 성적을 어떤 방식으로 저장해야할지 고민..

2. 이름, 성적을 둘다 저장하는 이차원 리스트로 저장한다음에

3. 성적을 기준으로 리스트를 정렬하면 될거같음

 

소스코드

n = int(input())

array = []

for i in range(n):
  array.append(list(input().split()))
  array[i][1] = int(array[i][1])

array = sorted(array, key = lambda x: x[1]) # 점수를 기준으로 정렬

for i in range(n):
  print(array[i][0], end = ' ') # 이름만 출력

 

오답노트 & 알아낸 것

- 이름만 출력할때 반복문에 배열을 넣어서 출력하면 훨씬 간결해진다..