알고리즘/백준

백준 13305: 주유소 (Python)

sssbin 2022. 1. 21. 19:07


https://www.acmicpc.net/problem/13305

 

13305번: 주유소

표준 입력으로 다음 정보가 주어진다. 첫 번째 줄에는 도시의 개수를 나타내는 정수 N(2 ≤ N ≤ 100,000)이 주어진다. 다음 줄에는 인접한 두 도시를 연결하는 도로의 길이가 제일 왼쪽 도로부터 N-1

www.acmicpc.net


백준 오랜만

알고리즘 기말고사 때 나왔던 문제라서 반가웠다.
하지만 기억 안 남. 시험 때도 시간이 없기도 해서 걍 대충 휘갈겨 썼던 기억.
좀더 미리 풀어볼걸 조금 억울했음,,,

처음에 꽤 복잡하게 생각했다.
근데 풀면서는 문제가 간단하다고 생각했음.

n = int(input()) 
length = list(map(int, input().split())) 
price = list(map(int, input().split())) 

del price[n-1] 
n -= 1 
cost = 0 

while n > 0:
	len_sum = 0 
    minimum = min(price) 
    idx = price.index(minimum) 
    
    for i in range(idx, n): 
    	len_sum += length.pop() 
        del price[-1] 
        
    cost += len_sum * minimum 
    n = idx 
    
print(cost)

 


틀림ㅋ
부분점수 받았다. 기분 나빠요

원인은 시간초과···
머리 뜯는 와중에 태스크를 일일이 나누지 않고 한번에 반복문 돌면서 계산해도 된다는 것을 깨닫고 우왕 했다 ㅋㅋㅋ

n = int(input())
length = list(map(int, input().split()))
price = list(map(int, input().split()))

minimum = price[0]
cost = 0

for i in range(n-1):
    if minimum > price[i]:
        minimum = price[i]

    cost += minimum * length[i]

print(cost)

 


분발하자,,,,,,,

'알고리즘 > 백준' 카테고리의 다른 글

백준 2606: 바이러스 (Python)  (0) 2022.01.29
백준 1260: DFS와 BFS (Python)  (0) 2022.01.29
백준 1789: 수들의 합 (Python)  (0) 2021.10.02
백준 1946: 신입 사원 (Python)  (0) 2021.09.30
백준 10162: 전자레인지 (Python)  (0) 2021.09.30