공부하기/백준

[Python] 백준 풀기 2822 - 점수 계산

XEV 2023. 1. 3. 21:42

파이썬 백준 2822번

실버 5

https://www.acmicpc.net/problem/2822

 

2822번: 점수 계산

8개 줄에 걸쳐서 각 문제에 대한 참가자의 점수가 주어진다. 점수는 0보다 크거나 같고, 150보다 작거나 같다. 모든 문제에 대한 점수는 서로 다르다. 입력으로 주어지는 순서대로 1번 문제, 2번 문

www.acmicpc.net

 

 

 

 

 

문제 보기

분류: 정렬

 

 

 

 

 

문제 풀기

입력되는 점수들을 score_ls 리스트 index 와 문제 번호가 일치하도록 입력 받는다.

점수 리스트를 내림차순으로 정렬을 하고 가장 큰 앞쪽 5 개만 남겨두고 나머지를 제거한다.

입력 리스트 score_ls 의 원소를 문제 번호에 맞게 순차적으로 빼내어 5 개로 정렬된 리스트의 원소에 있는지 없는지를 판별하여 있다면 그 값을 누적해 더하고 그 index 도 result_ls 에 순차적으로 저장해 나간다.

socre_ls 의 모든 원소의 검사가 끝나면 totalScore 와 result_ls 를 출력 형식에 맞게 제출한다.

 

 

 

 

 

코드 보기

import sys
inputdata = sys.stdin.readline


def fnTotalScore():
    sorted_score_ls = sorted(score_ls, reverse=True)
    print(sorted_score_ls)          # TEST PRINT
    sorted_score_ls = sorted_score_ls[:5]
    print(sorted_score_ls)          # TEST PRINT
    
    totalScore = 0
    result_ls = []
    for i in range (1, len(score_ls)):
        if score_ls[i] in sorted_score_ls:
            totalScore += score_ls[i]
            result_ls.append(i)
    print(totalScore)
    print(*result_ls)


if __name__ == "__main__":
    score_ls = [0]
    for _ in range(8):
        score_ls.append(int(inputdata().strip()))
    print(score_ls)                 # TEST PRINT
    
    fnTotalScore()



# 20
# 30
# 50
# 48
# 33
# 66
# 0
# 64

# [0, 20, 30, 50, 48, 33, 66, 0, 64]
# [66, 64, 50, 48, 33, 30, 20, 0, 0]
# [66, 64, 50, 48, 33]

# 261
# 3 4 5 6 8