파이썬 알고리즘 155번 | [백준 1149번] RGB거리 - DP

Yunny.Log ·2022년 5월 20일
0

Algorithm

목록 보기
158/318
post-thumbnail

155. RGB거리

1) 어떤 전략(알고리즘)으로 해결?

2) 코딩 설명

<다른 분 풀이>

출처 : https://pacific-ocean.tistory.com/147


n = int(input())
p = []
for i in range(n):
    p.append(list(map(int, input().split())))

for i in range(1, len(p)):
    print(p)
    p[i][0] = min(p[i - 1][1], p[i - 1][2]) + p[i][0]
    p[i][1] = min(p[i - 1][0], p[i - 1][2]) + p[i][1]
    p[i][2] = min(p[i - 1][0], p[i - 1][1]) + p[i][2]
print(p)
print(min(p[n - 1][0], p[n - 1][1], p[n - 1][2]))

<다른 분의 풀이 or 내 틀렸던 풀이, 문제점>

출처 : 출처

import sys
n=int(sys.stdin.readline().rstrip())
inp=[list(map(int,sys.stdin.readline().split())) for _ in range(n)]
stk1=[]
stk2=[]
stk3=[]
res1=[]
res2=[]
res3=[]

for i in range(n) :
    stk1.append(inp[i][0]) #빨
    stk2.append(inp[i][1]) #초
    stk3.append(inp[i][2]) #파

print(stk1)
print(stk2)
print(stk3)

res1.append(stk1[0])
res2.append(stk2[0])
res3.append(stk3[0])
for i in range(1,n) :
    res1.append(min(stk2[i], stk3[i]))
    res2.append(min(stk1[i], stk3[i]))
    res3.append(min(stk2[i], stk1[i]))

print(res1)
print(res2)
print(res3)


<반성 점>

<배운 점>

  • DP의 메모이제이션을 이렇게 리스트에 담고, 누적해나가는 방식
  • 완전 탐색이 시간 초과가 걸리는 경우에는 DP 를 사용
  • ord 는 문자를 숫자 아스키로 바꿔주고, chr은 그 반대
  • ord와 chr

0개의 댓글