[6/24] 2822 (점수 계산)
실버5 문제
내 코드
answer = []
for i in range(8):
num = int(input())
answer.append([num, i+1])
answer.sort()
answer = answer[3:]
answer.sort(key = lambda x:x[1])
ssum = 0
for j in answer:
ssum += j[0]
print(ssum)
for k in answer:
print(k[1], end=" ")
로직
- 입력받은 숫자와 숫자의 인덱스(+1)를 2차원 리스트로 answer에 추가
- answer를 정렬하고, 슬라이싱하여 최대값 5개만 남김
- 합을 구함
- 인덱스 출력
효율적인 코드
arr = []
result = []
ssum = 0
for _ in range(8):
arr.append(int(input()))
for i in range(5):
ssum = ssum + max(arr)
idx = arr.index(max(arr))
result.append(idx+1)
arr[idx] = 0
print(ssum)
print(*(sorted(result)))
피드백
- 1차원 리스트로 풀어서, for문을 하나 덜 사용했다.
- 다 쓴 최댓값은 0으로 변경해서, 다음 최댓값을 쓸 수 있도록 했다.
배운 것
- 리스트를 출력할 때 print 뒤에 *를 붙이면, 괄호 없이 각각의 값을 출력할 수 있다.
Author And Source
이 문제에 관하여([6/24] 2822 (점수 계산)), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@kj313903/624-2822-점수-계산저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)