[Python]알고리즘/이코테 2021

[정렬 알고리즘] 문제2 - 성적인 낮은 순서로 학생 출력하기(180p)

HSY_mumu 2022. 4. 18. 13:44
728x90

[이코테] 문제2 - 성적인 낮은 순서로 학생 출력하기(180p)

(한줄평) 파이썬 기본 정렬 라이브러리를 이용하면 쉽게 풀 수 있었던 기본 문제!

(풀이1) 기본 정렬 라이브러리 사용

풀이 시간: 3분 이내

1) 문제 해결 아이디어

sort()의 key에 정렬 기준을 명시하면 정렬 기준대로 정렬을 할 수 있다.

 

2) 소스코드

n = int(input())  # 학생 수
arr = [input().split()  for _ in range(n)]  # n명의 학생정보

# 성적을 기준으로 오름차순 정렬
arr.sort(key=lambda x: x[1])
for student in arr:
  print(student[0], end= " ")  # 이름 출력

 

(풀이2) 계수 정렬

풀이 시간: 15분 이내

1) 문제 해결 아이디어

성적은 100이하 자연수이므로 101의 크기로 2차원 리스트(arr)을 생성한다.

입력받을 때 해당 점수에 해당하는 인덱스에 이름을 삽입한다.

이름을 0번 인덱스부터 차례대로 출력하면 오름차순 출력된다.

 

2) 소스코드

n = int(input())  # 학생 수
arr = [[] for _ in range(100001)]

for i in range(n):
  name, score = input().split()
  arr[int(score)].append(name)  # 해당 점수에 이름 넣기

for student in arr:
  for name in student:
    print(name, end=" ")
728x90