728x90
반응형
Summary
이 문제는 리스트를 응용해서 풀 수 있게 만들어진 문제로 보인다.
N 명의 학생의 이름과 점수를 순서대로 입력받아 처리해주어야 한다.
예제를 보면 알 수 있듯이 이름 - 점수 - 이름 - 점수 순으로 입력된다.
문제에서 원하는 결과는 두 번째로 낮은 점수를 가진 학생을 이름순으로 정렬해서 출력하는 것이다.
그래서 단순하게 이름과 점수를 하나의 리스트 [이름, 점수] 로 저장했고 등급을 하나 더 저장했다.
이렇게 한 이유는 일단 점수를 저장해서 두 번째로 낮은 점수를 가져오고 가져온 점수로 검색해서 이름을 출력해야겠다고 생각했다.
stds = []
scores = []
for _ in range(int(input())):
name = input()
score = float(input())
stds.append([name, score])
scores.append(score)
다음으로 점수의 중복을 제거하고 정렬해서 두 번째로 낮은 점수를 가져왔다.
unique_scores = list(set(scores))
sorted_usc = sorted(unique_scores)
sec_lowest_grade = sorted_usc[1]
그리고나서 해당 점수를 가지고 이름을 찾았다.
아, 그리고 이름을 출력하기 전 오름차순으로 정렬해서 출력해야해서 미리 정렬을 해주었다.
그렇게 두 번째로 낮은 점수를 가진 학생의 이름을 출력할 수 있었다.
sorted_stds = sorted(stds)
for std in sorted_stds:
if std[1] == sec_lowest_grade:
print(std[0])
Problem
Submit Code
if __name__ == '__main__':
stds = []
scores = []
for _ in range(int(input())):
name = input()
score = float(input())
stds.append([name, score])
scores.append(score)
unique_scores = list(set(scores))
sorted_usc = sorted(unique_scores)
sec_lowest_grade = sorted_usc[1]
sorted_stds = sorted(stds)
for std in sorted_stds:
if std[1] == sec_lowest_grade:
print(std[0])
Result
728x90
반응형
'알고리즘 > HackerRank' 카테고리의 다른 글
Strings - Find a string (Python) (0) | 2023.01.12 |
---|---|
HackerRank Python 문제 풀이 참고 사이트 (0) | 2023.01.11 |
[Python] Basic Data Types - Lists (0) | 2023.01.10 |
Basic Data Types - List Comprehensions (Python) (0) | 2023.01.08 |
Aggregation - The Blunder (SQL) (0) | 2022.12.07 |