[Python]伯準/RGB距離/149/DP
DPコンセプトショートカット
質問する
RGB距離問題リンク
RGB街にはN軒の家がある.街は線分で表すことができ、1号室からN号室まで順番に表示されます.
家は赤、緑、青の中の色に塗らなければならない.各家に赤、緑、青の費用を塗るときは、以下のルールを満たし、すべての家の費用を塗る最高価格を見つけてみましょう.1号室の色は2号室の色と同じではありません. N号の家の色はN-1号の家の色と同じではありません. i(2≦i≦N-1)号住宅の色はi-1号、i+1号住宅の色と同じではない. 入力
1行目は家の数N(2≦N≦1000)を与えた.2行目から、N行目では、1軒ごとに赤、緑、青に塗った料金が1号から1行1つになります.家を塗る費用は1000以下の自然数です.
最初の行には、すべてのブラシ住宅の費用の最高値が出力されます.
現在のRGBのいずれかの色を選択した場合、以前は現在の色を除いて、コストの中で小さいコストを選択しました.
3 D配列で入力を受け入れる
各色を複文で選択する場合、現在の色以外の色の最小コストを選択し、現在の値に加算します.
最後のリストから最小の原価出力を選択
コード#コード#
質問する
RGB距離問題リンク
RGB街にはN軒の家がある.街は線分で表すことができ、1号室からN号室まで順番に表示されます.
家は赤、緑、青の中の色に塗らなければならない.各家に赤、緑、青の費用を塗るときは、以下のルールを満たし、すべての家の費用を塗る最高価格を見つけてみましょう.
1行目は家の数N(2≦N≦1000)を与えた.2行目から、N行目では、1軒ごとに赤、緑、青に塗った料金が1号から1行1つになります.家を塗る費用は1000以下の自然数です.
3
26 40 83
49 60 57
13 89 99
しゅつりょく最初の行には、すべてのブラシ住宅の費用の最高値が出力されます.
96
方法現在のRGBのいずれかの色を選択した場合、以前は現在の色を除いて、コストの中で小さいコストを選択しました.
3 D配列で入力を受け入れる
各色を複文で選択する場合、現在の色以外の色の最小コストを選択し、現在の値に加算します.
最後のリストから最小の原価出力を選択
コード#コード#
# url : https://www.acmicpc.net/problem/1149
# 난이도 : silver 1
import sys
n = int(input())
num_lists = [list(map(int,sys.stdin.readline().split())) for _ in range(n)]
# 이 전에 칠한 색을 제외한 비용 중 작은 값을 현재 비용과 더한다
for i in range(1, len(num_lists)):
num_lists[i][0] += min(num_lists[i-1][1],num_lists[i-1][2])
num_lists[i][1] += min(num_lists[i-1][0],num_lists[i-1][2])
num_lists[i][2] += min(num_lists[i-1][0],num_lists[i-1][1])
print(min(num_lists[n-1]))
print(num_lists)
Reference
この問題について([Python]伯準/RGB距離/149/DP), 我々は、より多くの情報をここで見つけました https://velog.io/@gandi0330/Python-백준-RGB거리-1149번-DPテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol