[6/24] 2822 (점수 계산)

이경준·2021년 6월 24일
0

코테

목록 보기
47/140
post-custom-banner

실버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. 입력받은 숫자와 숫자의 인덱스(+1)를 2차원 리스트로 answer에 추가
  2. answer를 정렬하고, 슬라이싱하여 최대값 5개만 남김
  3. 합을 구함
  4. 인덱스 출력

효율적인 코드

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 뒤에 *를 붙이면, 괄호 없이 각각의 값을 출력할 수 있다.
profile
The Show Must Go On
post-custom-banner

0개의 댓글