-
2822. [Python]점수 계산Python_알고리즘/Silver V 2023. 4. 8. 02:44
1. 문제
https://www.acmicpc.net/problem/2822
2822번: 점수 계산
8개 줄에 걸쳐서 각 문제에 대한 참가자의 점수가 주어진다. 점수는 0보다 크거나 같고, 150보다 작거나 같다. 모든 문제에 대한 점수는 서로 다르다. 입력으로 주어지는 순서대로 1번 문제, 2번 문
www.acmicpc.net
2. 접근 방법
- 시간 제한: 1초
- 메모리 제한: 128MB
- 정렬
3. 파이썬 코드
num_list = [] cnt = 1 # 인풋값 8개 값들을 리스트 저장, 인덱스값까지 for _ in range(8): num_list.append([int(input()),cnt]) cnt += 1 # 들어온 숫자를 내림차순으로 정렬 num_list.sort(reverse=True) total = 0 # 상위 5개 점수의 합을 변수에 저장 for j in range(5): total += num_list[j][0] # 총합 출력 print(total) # 인덱스 리스트 생성 ans_list = [] # 인덱스 리스트에 상위 5개 인덱스 저장 for j in range(5): ans_list.append(num_list[j][1]) # 오름차순 정렬 ans_list.sort() print(*ans_list)
4. 문제를 풀고난 후 생각
- 문제에서 인풋으로 8개의 숫자가 주어지므로 따로 변수처리를 하지 않았고, 단순히 인풋값마다 인덱스 번호를 직접 넣어주는 방식으로 리스트를 생성했다.
- 이후 점수로 정렬한 다음 상위 5개의 총합을 변수에 저장한 후 그 상위 점수들에 대한 인덱스 값을 다른 리스트에 저장한 후 오름차순 정렬로 출력하였다.
- 좀 더 간단한 방법이 있을 것 같지만 문제를 보고 생각해낸 방식으로는 조금 번거롭더라도 위와 같은 방식으로 구현했다.
5. 문제를 푸는데 도움이 되는 지식
- 정렬
'Python_알고리즘 > Silver V' 카테고리의 다른 글
4096. [Python]팰린드로미터 (0) 2023.04.26 1769. [Python]3의 배수 (0) 2023.04.26 9625. [Python]BABBA (0) 2023.04.05 8979. [Python]올림픽 (0) 2023.04.04 2740. [Python]행렬 곱셈 (0) 2023.03.31