안녕하세요. 성조입니다.
이 문제는 Python 3 버전으로 풀이됐습니다.
실버 5단계 치고는 문법 중점의 문제였기 때문에 생각보다 풀이는 좋았습니다.
맞았다 생각하고 풀었다가 코드 누럭한 것 때문에 바로 바꿔서 올렸네요..
문제 출처
https://www.acmicpc.net/status?from_mine=1&problem_id=2822&user_id=seongjo&language_id=1003
문제
상근이는 퀴즈쇼의 PD이다. 이 퀴즈쇼의 참가자는 총 8개 문제를 푼다. 참가자는 각 문제를 풀고, 그 문제를 풀었을 때 얻는 점수는 문제를 풀기 시작한 시간부터 경과한 시간과 난이도로 결정한다. 문제를 풀지 못한 경우에는 0점을 받는다. 참가자의 총 점수는 가장 높은 점수 5개의 합이다.
상근이는 잠시 여자친구와 전화 통화를 하느라 참가자의 점수를 계산하지 않고 있었다. 참가자의 8개 문제 점수가 주어졌을 때, 총 점수를 구하는 프로그램을 작성하시오.
입력
8개 줄에 걸쳐서 각 문제에 대한 참가자의 점수가 주어진다. 점수는 0보다 크거나 같고, 150보다 작거나 같다. 모든 문제에 대한 점수는 서로 다르다. 입력으로 주어지는 순서대로 1번 문제, 2번 문제, ... 8번 문제이다.
출력
첫째 줄에 참가자의 총점을 출력한다. 둘째 줄에는 어떤 문제가 최종 점수에 포함되는지를 공백으로 구분하여 출력한다. 출력은 문제 번호가 증가하는 순서이어야 한다.
코드
import sys
req = []
index = []
for i in range(8):
req.append( int(sys.stdin.readline() ) )
res = sorted( req, reverse=True )
for j in res[:5]:
index.append( req.index( j ) + 1 )
print( sum( res[:5] ) )
index.sort()
print(*index)
풀이
출력해야 되는 값은 다음과 같다.
1) 8개의 값중. 가장 높은 점수 5개의 합
2) 가장 높은 점수의 1번부터 8번까지의 번호
이번 문제에서는 sorted 함수를 이해하고 풀이하면 좋다.
sort의 경우 값 그자체를 정렬하여 값을 반환한다.
sorted의 경우 원본 값을 그대로 두고 정렬한 값을 변수로 보내주는 의미가 있다.
변수 = sorted(데이터, reverse =값)
reverse가 Flase라면 오름차순 True라면 내림차순의 값으로 정렬한다.
index 배열 변수에는 req의 순서대로 입력받은 배열의 값을 기준으로 값을 가져온다.
print(*리스트변수)를 사용하면 리스트의 값을 반복문에 변수[ i ]를 적용할 필요없이 1, 2, 3, 4, 5를 출력할 수 있다.
출퇴근하면서 운동도 하고, 공부하고, 커밋하는 것은 몹시 어려운 일인 것 같습니다..
그래도 포기하지 않고 꾸준히 성장해 보려고 합니다.
오타나 이해가 안 가는 부분이 있다면 언제든지 댓글로 얘기해 주시고 짧은 포스팅 읽어주셔서 감사드립니다.
다음 포스팅 때 뵙겠습니다.
'백준 - Python' 카테고리의 다른 글
[백준-10815][Python] 숫자 카드 (0) | 2023.02.03 |
---|---|
[백준 - 1463][Python] 1로 만들기 (0) | 2023.01.26 |
[백준 - 2476][Python] 주사위 게임 (0) | 2023.01.20 |
[백준 - 1920][Java] 수 찾기 (0) | 2023.01.19 |
[백준 - 10989][Python] 수 정렬하기 3 (0) | 2023.01.17 |