https://www.acmicpc.net/problem/1932
그리디 알고리즘으로 DP로 짜면 되는 문제다.
어렵게 자꾸 생각하니까 로직이 막 꼬이고 한참 헤맸다...휴
그냥 단순하게 생각해도 되는 문제는 단순하게 생각하자!
파이썬 코드
import sys
input = sys.stdin.readline
n = int(input())
tri = []
for _ in range(0, n):
tri.append(list(map(int, input().split())))
row = 2
for i in range(1, n):
for j in range(row):
if j==0: #맨 왼쪽 번호
tri[i][j] += tri[i-1][j]
elif j==len(tri[i])-1: #맨 오른쪽 번호
tri[i][j] += tri[i-1][j-1]
else:#그 사이
tri[i][j] += max(tri[i-1][j],tri[i-1][j-1])
row += 1
print(max(tri[n-1]))
C++ 코드
#include<iostream>
#include<algorithm>
using namespace std;
int tri[501][501]={0,};
int arr[501][501]={0,};
int main(){
int n;
cin>>n;
for(int i=1;i<=n;i++){
for(int j=1;j<=i;j++){
cin>>tri[i][j];
}
}
int res=0;
for (int i = 1; i <=n; i++) {
for (int j =1; j <=n; j++) {
arr[i][j] += max(arr[i - 1][j - 1], arr[i - 1][j]) + tri[i][j];
res = max(res, arr[i][j]);
}
}
cout << res;
}
'알고리즘 > 백준(BOJ)' 카테고리의 다른 글
[백준/BOJ/알고리즘/파이썬(python)]#10809_알파벳 찾기 (0) | 2021.09.17 |
---|---|
[백준/BOJ/알고리즘/파이썬(python)/C++]#1920_수 찾기[이분탐색] (0) | 2021.09.17 |
[백준/BOJ/알고리즘/파이썬(python)]#7785_회사에 있는 사람 (0) | 2021.09.14 |
[백준/BOJ/알고리즘/파이썬(Python)]#10212:Mystery (0) | 2021.09.13 |
[백준/BOJ/알고리즘/파이썬(python)]#9148:신나는 함수 실행[재귀] (0) | 2021.09.13 |