업데이트:

❓ 문제


문제

💡 문제 해결 아이디어


학생의 정보가 최대 100,000개까지 입력될 수 있으므로 최악의 경우 시간 복잡도 O(NlogN)을 보장하는 알고리즘을 이용하거나 O(N)을 보장하는 계수 정렬을 이용하면 된다.

학생 이름과 점수를 입력 받아 학생 이름만을 출력하면 되므로 학생 정보를 (점수, 이름)으로 묶은 뒤 정렬을 수행해야 한다.

파이썬 기본 정렬 라이브러리를 이용해 key 매개변수를 이용하는 것이 효과적이다.

✔️ 파이썬 답안 예시


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
# N 입력 받기
n = int(input())

# N명의 학생 정보를 입력 받아 리스트에 저장
array = []
for i in range(n):
    input_data = input().split()
    # 이름은 문자열 그대로, 점수는 정수형으로 변환하여 저장
    array.append((input_data[0], int(input_data[1])))

# 키(Key)를 이용하여, 점수를 기준으로 정렬
array = sorted(array, key=lambda student: student[1])

# 정렬이 수행된 결과를 출력
for student in array:
    print(student[0], end=' ')

Notice: 이 게시물은 한빛미디어의 이것이 코딩 테스트다 교재를 참고하였습니다.

댓글남기기