레야몬
[C++] 1932번 정수 삼각형 - DP 본문
#include <iostream>
#define MAX_SIZE 501
using namespace std;
int tri[MAX_SIZE][MAX_SIZE]; //삼각형을 저장할 2차원 배열
int MAX_tri[MAX_SIZE][MAX_SIZE];
int n; //삼각형의 크기
int main()
{
ios_base::sync_with_stdio(false);
cin.tie(NULL); cout.tie(NULL);
cin >> n;
for(int i=1; i<=n; i++) {
for(int j=1; j<=i; j++)
cin >> tri[i][j];
}
MAX_tri[1][1]=tri[1][1]; //초기값 넣어주기
for(int i=2; i<=n; i++) {
for(int j=1; j<=i; j++) {
int Left = MAX_tri[i-1][j-1]; //왼쪽값과 오른쪽 값중 큰 것으로 저장
int Right = MAX_tri[i-1][j];
MAX_tri[i][j] = (Left>Right ? Left:Right) + tri[i][j];
}
}
int max=0;
for(int j=1; j<=n; j++) { //최종 값들중(제일 아래에 있는 값) 제일 큰 값 선택
if(MAX_tri[n][j]>max)
max=MAX_tri[n][j];
}
cout << max;
return 0;
}
오랜만에 쉬운 문제를 풀어서 너무 기분이 좋다..ㅋㅋㅋㅋ 아무튼 쉽게 풀었고
나는 8ms가 나왔는데 4ms가 나온 사람도 있어서 코드를 봤다. 그 사람은 받는 것과 MAX를 따로 계산하는 것이 아닌 받는 것과 MAX를 계산하는 것을 같이 하였다. 그러면 /2배 되겠지. 암튼 참고한 소스코드랑 사이트는 아래에 있다.
<C++ max() 함수>
https://blockdmask.tistory.com/366
[C++] 최초값, 최대값 함수 min, max 에 대해서 (클래스, vector 사용법까지)
여러분 펭하펭하. BlockDMask 입니다. 오늘은 C++에서 최소값, 최대값을 구할수 있는 std::min, std::max 함수의 정의에 대해서 알아보고, 1. 기본적인 사용법 2. 클래스를 min max에 넣는 방법 3. vector에서 mi
blockdmask.tistory.com
<4ms 소스코드>
https://www.acmicpc.net/source/9511674
로그인
www.acmicpc.net
※현재 고등학교 등교중인 학생입니다. 이제 알고리즘을 본격적으로 공부하기 시작해서 아직 초보입니다. 혹시 제가 잘못 알고있는 점이나 더 좋은 풀이 방법이 있어 댓글에 남겨주시면 감사히 하나하나 열심히 읽어보겠습니다. 좋아요, 단순한 댓글 한마디라도 저에겐 큰 힘이 됩니다! 감사합니다.
'알고리즘 > 백준' 카테고리의 다른 글
[C++] 1991번 트리 순회 - 트리 (0) | 2022.09.03 |
---|---|
[C++] 1967번 트리의 지름 - 그래프 이론, BFS (0) | 2022.09.02 |
[C++] 1918번 후위 표기식 - 스택 (0) | 2022.09.01 |
[C++] 1865번 웜홀 - 벨만포드 (0) | 2022.09.01 |
[C++] 1753번 최단경로 - 다익스트라 (0) | 2022.09.01 |