[Python] 13305번 - 주유소

허창원·2023년 3월 2일
0
post-thumbnail
post-custom-banner


풀이를 떠올린 과정

자료의 재배열이 필요한가? 아니오.
연산에서 도로의 길이는 공통된다. 그러면 도시의 기름 가격에서 최소값을 찾아야한다.
그러므로 비교 연산자를 통해서 도시의 최소 기름가격을 찾자.

첫 번째 코드

city_num = int(input())
road = list(map(int,input().split()))
L = list(map(int,input().split()))

Sum = L[0]*road[0]
minL = L[0]
for i in range(len(road)-1):
    if minL > L[i+1]:
        minL = L[i+1]
        Sum += minL*road[i+1]
    else:
        Sum += minL*road[i+1]
print(Sum)

수정 후 코드

city_num = int(input()) # 도시 수
road = list(map(int,input().split())) # 도로의 거리
L = list(map(int,input().split())) # 도시의 기름 가격

Sum = 0 # 도시 기름가격 * 도로의 거리의 합
minL = 9999999999 # 최소를 구할때 초기값 크게 임의로 잡아주기
for i in range(city_num-1):
    if minL > L[i]:
        minL = L[i]
    Sum += minL*road[i]
print(Sum)

개선점

  1. 초기값을 for 문안에서 구할 수 있는데 쓸 데 없이 길게 씀.
  2. if else문에서 Sum 값이 중복되므로 if문 밖에 써줘야함.
post-custom-banner

0개의 댓글