백준 17509번 And the Winner Is... Ourselves!

DARTZ·2022년 5월 8일
0

알고리즘

목록 보기
45/135
import sys

input = sys.stdin.readline

# 문제와 패널티 시간은 서로 영향을 주지 않으므로 분리
problem = []
penalty = []

for i in range(11):
    p, t = map(int, input().split())
    problem.append(p) # 문제 푸는 시간은 problem에
    penalty.append(t) # 패널티는 penalty 변수에 넣는다.

problem.sort() # 최소시간이므로 문제 풀이 시간이 빠른 것부터 정렬
count = problem[0] # 맨 처음 걸린시간으로 초기화

for i in range(1, 11): # 리스트 11개를 돌면서
    count += sum(problem[:i]) + problem[i] # i번째 문제 푸는 시간 + 지금 동안 문제 푼시간의 누적

print(count + (20 * sum(penalty))) # penalty는 단순하게 더해서 20만 곱해주면 된다.

처음에는 무슨 문제인가 했다.
푸는 시간이 누적 되므로 (10) + (10+10) + (10+10+10) + (10+10+10+20) -> 이런식으로
리스트에 슬라이싱을 사용하여 계산했다.

profile
사람들이 비용을 지불하고 사용할 만큼 가치를 주는 서비스를 만들고 싶습니다.

0개의 댓글