[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