IT STUDY LOG
[Python] 백준 12026번: BOJ 거리 본문
# 문제 내용
# 알고리즘 분류
- 다이나믹 프로그래밍
# 풀이
import sys
input = sys.stdin.readline
INF = sys.maxsize
# 보도블럭 길이 1~n까지, 목적지는 n
n = int(input())
# 보도블럭
data = list(input())
# B->O->J 순으로 밟아야하며
# k칸 점프하는데 필요한 에너지 양은 k*k
dp = [INF] * n
dp[0] = 0
for i in range(1, n):
for j in range(i):
if data[j] == 'B' and data[i] != 'O':
continue
elif data[j] == 'O' and data[i] != 'J':
continue
elif data[j] == 'J' and data[i] != 'B':
continue
dp[i] = min(dp[i], dp[j] + pow(i-j, 2))
if dp[n-1] == INF:
print(-1)
else:
print(dp[n-1])
'computer science > coding test' 카테고리의 다른 글
[MySQL] 프로그래머스: 3월에 태어난 여성 회원 목록 출력하기 (0) | 2023.04.24 |
---|---|
[JAVA] 프로그래머스: 폰켓몬 (0) | 2023.04.24 |
[Python] 백준 16953번: A → B (0) | 2023.04.20 |
[Python] 백준 11058번: 크리보드 (0) | 2023.04.18 |
[Python] 백준 2606번: 바이러스 (0) | 2023.04.17 |
Comments