백준 13305. 주유소(with Python)

하얀족제비·2021년 7월 27일
0

접근 방법

현재 위치보다 다음 갈 위치 들의 기름 값이 비싸면 현재 위치에서 사면 되는 것이다.
즉, 현재 위치보다 더 싼 기름 값이 나오기 전까지는 현재 위치의 기름 값으로 비용을 측정해야한다.

예를 들어서,

일단 모든 거리를 1로 하고
각각의 네모 안에 기름 가격 위와 같다고 할때

  1. 일단 가장 처음에는 기름을 넣어야 하기 때문에 5를 초기 최소값으로 잡는다.
  2. 다음 네모칸으로 이동하면서 거리 1은 임시 변수에 누적해둔다.
  3. 넘어온 칸이 6으로 최소값인 5보다 크기때문에 넘어간다.
  4. 다음 네모칸으로 이동하면서 마찬가지로 거리 1은 임시 변수에 누적해둔다.
  5. 넘어온 칸이 2로 최소값인 5보다 더 작다.
  6. 그러면 지금까지 누적해온 거리는 5의 기름 값으로 비용을 산정해야 한다.
  7. 즉, 거리 누적값 2에 비용 5를 곱한 값인 10을 cost 변수에 누적해두고
  8. 최소값을 5에서 2로 갱신하며 끝까지 같은 메커니즘으로 반복한다.

코드

N  = int(input())
road = list(map(int, input().split()))
oil = list(map(int, input().split()))

cost = 0 # 비용 변수
tmp = 0 # 임시 변수
minV = oil[0] # 초기 최소값

for i in range(N):
    if i == N-1:
        cost += (tmp * minV)
        print(cost)
    else:
    	# 최소값 조건에 걸리면
        if oil[i] < minV:
            # 지금까지 누적된 거리와 이전 최소값으로 비용 측정
            cost += (tmp * minV)
            # 비용 계산 후 거리는 0으로 초기화
            tmp = 0
            # 최소값 갱신
            minV = oil[i]
        # 임시변수에 거리를 누적
        tmp += road[i]
profile
안녕하세요~ 개발을 꿈꾸는 하얀족제비입니다!

0개의 댓글