Koder / 박성훈
article thumbnail

https://www.acmicpc.net/problem/1932

 

1932번: 정수 삼각형

첫째 줄에 삼각형의 크기 n(1 ≤ n ≤ 500)이 주어지고, 둘째 줄부터 n+1번째 줄까지 정수 삼각형이 주어진다.

www.acmicpc.net

딱 보고 떠오른 방법은 위에서 내려가는 방법이겠지만

그러면 너무 시간이 오래 걸릴것 같아서

반대로 아래에서부터 올라오는 방식으로 짜보았다.

인접한 두가지를 비교해서 둘중 더 큰 숫자를 윗줄의 숫자에 더해주는걸 반복하면,

가장 큰 숫자가 제일 윗줄에 올라올것이고,

그 가장 윗줄만 출력해주면 된다.

 

#include <stdio.h>

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

int main(){
	int n;
	scanf("%d", &n);
	for(int i=0; i<n; i++){
		for(int j=0; j<=i; j++){
			scanf("%d", &arr[i][j]);
		}
	}
	for(int i=n-1; i>0; i--){
		for(int j=1; j<n; j++){
			if(arr[i][j] > arr[i][j-1]) arr[i-1][j-1] += arr[i][j];
			else                        arr[i-1][j-1] += arr[i][j-1];
		}
	}
	printf("%d", arr[0][0]);
	return 0;
}

시험 5일남았는데 플밍하고있는거 실화?

반응형