본문으로 바로가기

백준_12026

category 알고리즘 2021. 4. 11. 19:58

www.acmicpc.net/problem/12026

 

12026번: BOJ 거리

스타트가 링크를 만나는데 필요한 에너지 양의 최솟값을 출력한다. 만약, 스타트가 링크를 만날 수 없는 경우에는 -1을 출력한다.

www.acmicpc.net

dp 문제입니다. 순회를 하면서 전 포지션의 최소값을 dp에 기록해 줍니다.

 

N = int(input())
street = list(input())
max_num = 9999999
dp = [max_num] * N
dp[0] = 0


def prev_position(x):
    if x == 'B':
        return 'J'
    elif x == 'O':
        return 'B'
    elif x == 'J':
        return 'O'

for i in range(1, N):
    prev = prev_position(street[i])

    for j in range(i):
        if street[j] == prev:
            dp[i] = min(dp[i], dp[j] + pow(i - j, 2))

print(dp[N - 1] if dp[N - 1] != max_num else -1)

'알고리즘' 카테고리의 다른 글

백준_14888  (0) 2021.04.25
백준_20055  (0) 2021.04.25
프로그래머스_등굣길  (0) 2021.04.11
프로그래머스_주식가격  (0) 2021.04.04
프로그래머스_위장  (0) 2021.04.04