728x90
반응형
문제 설명
상근이는 퀴즈쇼의 PD이다. 이 퀴즈쇼의 참가자는 총 8개 문제를 푼다. 참가자는 각 문제를 풀고, 그 문제를 풀었을 때 얻는 점수는 문제를 풀기 시작한 시간부터 경과한 시간과 난이도로 결정한다. 문제를 풀지 못한 경우에는 0점을 받는다. 참가자의 총 점수는 가장 높은 점수 5개의 합이다.
상근이는 잠시 여자친구와 전화 통화를 하느라 참가자의 점수를 계산하지 않고 있었다. 참가자의 8개 문제 점수가 주어졌을 때, 총 점수를 구하는 프로그램을 작성하시오.
제한 사항
-8개 줄에 걸쳐서 각 문제에 대한 참가자의 점수가 주어진다. 점수는 0보다 크거나 같고, 150보다 작거나 같다. 모든 문제에 대한 점수는 서로 다르다. 입력으로 주어지는 순서대로 1번 문제, 2번 문제, ... 8번 문제이다.
-첫째 줄에 참가자의 총점을 출력한다. 둘째 줄에는 어떤 문제가 최종 점수에 포함되는지를 공백으로 구분하여 출력한다. 출력은 문제 번호가 증가하는 순서이어야 한다.
입출력 예
input |
output |
20 30 50 48 33 66 0 64 |
261 3 4 5 6 8 |
접근법
이번 문제도 굉장히 쉽습니다. 먼저 입력받은 점수들을 내림차순으로 정렬해주세요. 이때 상위 5개의 숫자에 대한 초기 리스트에서의 인덱스 값을 구합니다. 정렬된 리스트의 5까지의 합을 출력해 주시고, 인덱스 값을 오름차순으로 정렬해서 출력해주시면 됩니다.
나의 코드
import sys
scores = []
for _ in range(8):
scores.append(int(sys.stdin.readline()))
sorted_scores = sorted(scores, reverse=True)
question_index = []
for score in sorted(sorted_scores[:5]):
question_index.append(scores.index(score)+1)
question_index.sort()
print(sum(sorted_scores[:5]))
print(*question_index)
반응형
'알고리즘 > 백준알고리즘' 카테고리의 다른 글
[백준] 5052번 전화번호 목록 (0) | 2021.03.20 |
---|---|
[백준] 11652번 카드 (0) | 2021.03.20 |
[백준] 11728번 배열 합치기 (0) | 2021.03.20 |
[백준] 1946번 신입 사원 (0) | 2021.03.20 |
[백준] 11656번 접미사 배열 (0) | 2021.03.19 |