프로그래머스 level2 ) 땅따먹기

하우르·2021년 7월 7일
0

링크 : 프로그래머스 level2 ) 땅따먹기

풀이

D[N][4] 배열을 만들고,
D[i][j] 는 D[i-1][]행중(자신의 열을 제외)에 최대값을 더한 값이다.

D[i][0] = land[i][0]+Max(D[i-1][1],D[i-1][2],D[i-1][3])
D[i][1] = land[i][1]+Max(D[i-1][0],D[i-1][2],D[i-1][3])
D[i][2] = land[i][2]+Max(D[i-1][0],D[i-1][1],D[i-1][3])
D[i][3] = land[i][3]+Max(D[i-1][0],D[i-1][1],D[i-1][2])

마지막 최대값은 D[N-1][0~3]중에 최대값을 출력하면 된다.

class Solution {
    static int findMax(int a, int b, int c)
	{
		if(a<b)
		{
			if(b>c) return b;
			else return c;
		}
		else
		{
			if(a>c)return a;
			else return c;
		}
	}
    int solution(int[][] land) {
       for(int i=1; i<land.length;i++)
		{
			for(int j=0; j<4;j++)
			{
				if(j==0)
					land[i][j]=land[i][j]+findMax(land[i-1][1], land[i-1][2], land[i-1][3]);
				else if(j==1)
					land[i][j]=land[i][j]+findMax(land[i-1][0], land[i-1][2], land[i-1][3]);
				else if(j==2)
					land[i][j]=land[i][j]+findMax(land[i-1][0], land[i-1][1], land[i-1][3]);
				else
					land[i][j]=land[i][j]+findMax(land[i-1][0], land[i-1][1], land[i-1][2]);
			}
		}
		int answer = -1;
		for(int i=0; i<4;i++)
		{
			if(answer<land[land.length-1][i])
				answer =land[land.length-1][i];

		}

        return answer;
    }
}
profile
주니어 개발자

0개의 댓글

관련 채용 정보