개발/코딩테스트

프로그래머스 정수 삼각형

캐리캐리 2025. 1. 5. 18:13

해석

가장 왼쪽의 경우 이전 행의 가장 왼쪽의 값을 현재의 값과 합산한것이 현재의 값이 된다 

가장 오른쪽의 경우 이전 행의 가장 오른쪽의 값을 현재의 값과 합산한 것이 현재의 값이 된다. 

그 외의 경우 이전 행에서의 왼쪽 열의 값과 이전 행의 오른쪽 열의 값 중 큰 값을 현재의 값과 합산한 것이 현재의 값이 된다 

첫번째 행의 경우 계산의 대상이 아니니 제외한다 

cf) 전제가 삼각형이므로 가장 왼쪽 혹은 가장 오른쪽의 경우 행 , 열이 -1씩 줄어든다 

 

풀이 

public int solution(int[][] triangle) {
	int answer =0;
    
    for(int i=1; i<triangle.length; i++){
    	for(int j=0; j<triangle[i].length; j++){
        	if(j==0){
            	triangle[i][j]+= triangle[i-1][j];
            }else if(i==j){
            	triangle[i][j]+= triangle[i-1][j-1]           
            }else{
            	triangle[i][j]+=Math.max(triangle[i-1][j],triangle[i-1][j-1]);            
            }
            answer = Math.max(answer,triangle[i][j]);
        }
    }
    
    return answer;

}