๐ŸŒžAlgorithm/๐Ÿ”ฅprogrammers

[programmers] ์ •์ˆ˜ ์‚ผ๊ฐํ˜•

๋ฟŒ์•ผ._. 2026. 7. 22. 10:50
๋ฌธ์ œ
https://school.programmers.co.kr/learn/courses/30/lessons/43105
 

ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค

SW๊ฐœ๋ฐœ์ž๋ฅผ ์œ„ํ•œ ํ‰๊ฐ€, ๊ต์œก์˜ Total Solution์„ ์ œ๊ณตํ•˜๋Š” ๊ฐœ๋ฐœ์ž ์„ฑ์žฅ์„ ์œ„ํ•œ ๋ฒ ์ด์Šค์บ ํ”„

programmers.co.kr

 


< ์ •์ˆ˜ ์‚ผ๊ฐํ˜• >

 

๋ฌธ์ œ ํ’€์ด (Java)

class Solution {
	public int solution(int[][] triangle) {
		int answer = 0;

		int dp[][] = new int[triangle.length][triangle[triangle.length - 1].length];

		dp[0][0] = triangle[0][0];

		for (int i = 0; i < triangle.length - 1; i++) {
			for (int j = 0; j < triangle[i].length; j++) {
				dp[i + 1][j] = Math.max(triangle[i + 1][j] + dp[i][j], dp[i + 1][j]);
				dp[i + 1][j + 1] = Math.max(triangle[i + 1][j + 1] + dp[i][j], dp[i + 1][j + 1]);
			}
		}

		for (int i = 0; i < triangle[triangle.length - 1].length; i++) {
			answer = Math.max(answer, dp[triangle.length - 1][i]);
		}

		return answer;
	}
}

 

๊ฑฐ์ณ๊ฐ„ ์ˆซ์ž์˜ ํ•ฉ์„ ๊ตฌํ•˜๊ธฐ ์œ„ํ•ด dp ๋ฐฐ์—ด์„ ์„ ์–ธํ•œ๋‹ค. 0๋ฒˆ์งธ ํ–‰์—๋Š” ์›๋ž˜ ๊ฐ’์„ ์ €์žฅํ•˜๊ณ  0๋ฒˆ์งธ ํ–‰๋ถ€ํ„ฐ ๋งˆ์ง€๋ง‰ ํ–‰ ์ „๊นŒ์ง€ ํƒ์ƒ‰ํ•œ๋‹ค. ์ด๋•Œ, ๋‹ค์Œ ํ–‰์˜ ๊ฐ™์€ ์—ด๊ณผ, ๋‹ค์Œ ํ–‰์˜ ๋‹ค์Œ ์—ด์— ํ˜„์žฌ ๊ฐ’์„ ๋”ํ–ˆ์„ ๋•Œ ์ตœ๋Œ“๊ฐ’์„ dp์— ์ €์žฅํ•œ๋‹ค. 

 

์ตœ์ข… ๋งˆ์ง€๋ง‰ ํ–‰์„ ์‚ดํŽด๋ณด๋ฉฐ ์ตœ๋Œ“๊ฐ’์„ answer์— ์ €์žฅํ•œ ํ›„ answer์„ ๋ฐ˜ํ™˜ํ•œ๋‹ค. 



 

์ถœ์ฒ˜: ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค ์ฝ”๋”ฉ ํ…Œ์ŠคํŠธ ์—ฐ์Šต, 
https://school.programmers.co.kr/learn/challenges