본문 바로가기

백준 - 라면사기(18185) 본문

알고리즘

백준 - 라면사기(18185)

Seongjun_You 2023. 12. 9. 21:54

 

 

다양한 케이스로 패턴을 검출하고 풀었다.

 

case_1

1 2 1 1 -> 0

0 1 0 1 -> 7

0 0 0 1 -> 10

0 0 0 0 -> 13

 

case_2

0 1 1 1 -> 5

0 0 0 0 -> 12

 

 

세 개씩 확인을 하여 가운데가 오른쪽보다 클 때

같아질 때까지 왼쪽과 가운데를 뺀다.

 

def three(i):
    min_data = min(data[i:i+3])
    data[i] -= min_data
    data[i+1] -= min_data
    data[i+2] -= min_data
    return min_data*7

def two(i):
    min_data = min(data[i:i+2])
    data[i] -= min_data
    data[i+1] -= min_data
    return min_data*5

def one(i):
    min_data = data[i]
    data[i] = 0
    return min_data*3

n = int(input())
data = list(map(int, input().split()))+[0,0]
cost = 0
for i in range(len(data)-2):
    if data[i+1] > data[i+2]:
        minus = min(data[i],data[i+1]-data[i+2])
        data[i] -= minus
        data[i+1] -= minus
        cost += minus*5
        cost += three(i)
        cost += one(i)
    else:
        cost += three(i)
        cost += two(i)
        cost += one(i)
print(cost)

 

Comments