티스토리 뷰

숫자삼각형


[백준] 계단오르기 1932번





#include<stdio.h>


int max(int x, int y) { return x > y ? x : y; }


int main() {

int arr[501][501] = { 0 };

int n;

int input;

int ans = 0; 

scanf("%d", &n);


for (int i = 1; i <= n; i++) {

for (int j = 1; j <= i; j++) {

scanf("%d", &input);

arr[i][j] = max(arr[i - 1][j - 1], arr[i - 1][j]) + input;

ans = max(ans, arr[i][j]);

}

}

printf("%d\n", ans);

return 0;

}



예시를 통해서 분석했을 때,

arr[1][1] = 0 + 7  ------ ans = 7

arr[2][1] = 7 + 3  ------ ans = 10

arr[2][2] = 7 + 8  ------ ans = 15

arr[3][1] = 7 + 3 +8  ------ ans = 18 

arr[3][2] = 7 + 8 + 1 ------ ans = 18 

arr[3][2] = 7 + 8  + 0 ------ ans =  18


이런식으로 진행되어 


가장 쉬운 예를 이용해서 규칙을 찾아 보면 

arr[3][2] = max(arr[2][1],arr[2][2]) + input; 의 규칙이 도출될 수 있다.


이 방식을 이용해서 문제를 풀었습니다.




'프로그래밍 > 알고리즘' 카테고리의 다른 글

2017-03-17 알고리즘 문제 풀기  (0) 2017.03.19
2017-03-18 알고리즘 문제 풀기  (0) 2017.03.19
2017-03-15 알고리즘 문제 풀기  (0) 2017.03.17
기본적 정렬  (0) 2017.03.14
쿼드트리란?  (0) 2017.03.13
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
TAG
more
«   2025/02   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28
글 보관함