N = int(input()) INF = float('inf') arr = [list(map(int,input().split())) for _ in range(N)] result = float('inf') for first_room in range(3): dp = [[INF]*3 for _ in range(N)] dp[0][first_room] = arr[0][first_room] for i in range(1,N-1): for k in range(3): for j in range(3): if k !=j: dp[i][k] = min(dp[i-1][j]+arr[i][k],dp[i][k]) for i in range(3): for j in range(3): if i != j and i != first_room: dp[N-1][i] = min(dp[N-2][j]+arr[N-1][i],dp[N-1][i]) result = min(result,min(dp[N-1])) print(result)
N = int(input()) arr = [list(map(int,input().split())) for _ in range(N)] INF = float('inf') result = INF for first_room_color in range(3): dp = [[0]*3 for _ in range(N)] for i in range(3): if i == first_room_color: dp[0][i] = arr[0][i] else: dp[0][i] = INF for ind in range(1,N): dp[ind][0] = arr[ind][0] + min(dp[ind-1][1],dp[ind-1][2]) dp[ind][1] = arr[ind][1] + min(dp[ind-1][0],dp[ind-1][2]) dp[ind][2] = arr[ind][2] + min(dp[ind-1][0],dp[ind-1][1]) for last_room_color in range(3): if last_room_color != first_room_color: if result > dp[N-1][last_room_color]: result = dp[N-1][last_room_color] print(result)
'알고리즘 > 백준_복기_미완료' 카테고리의 다른 글
[BOJ/백준] 17779 게리맨더링 2 (0) | 2021.05.06 |
---|---|
[BOJ/백준] 17406 배열 돌리기 4 (0) | 2021.05.06 |
[BOJ/백준] 17298 오큰수 (0) | 2021.05.06 |
[BOJ/백준] 17281 ⚾ (0) | 2021.05.06 |
[BOJ/백준] 17114 하이퍼 토마토 (0) | 2021.05.06 |