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

5893 단어 백준코테백준

실버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 뒤에 *를 붙이면, 괄호 없이 각각의 값을 출력할 수 있다.

좋은 웹페이지 즐겨찾기