- ๋์ ํ๋ก๊ทธ๋๋ฐ
- js
- ์ฌ๋ผ์ด๋ฉ ์๋์ฐ
- go
- ์นด์นด์ค ์ฝํ
- DFS
- ์น๋ฆฐ์ด
- DP
- ํธ๋ฆฌ
- Union-Find
- golang
- ์นด์นด์ค2021
- ์๊ณ ๋ฆฌ์ฆ
- ๋นํธ๋ง์คํน
- ๋ค์ต์คํธ๋ผ
- ์์ฝ๋
- ์ฌ๊ท
- ๊ฐ์ฅ๊ฐ๊น์ด๊ณตํต์กฐ์
- ํ๋ก๊ทธ๋๋จธ์ค
- BFS
- Python
- nestjs
- ๋ฐฑ์๋ ํ๋ฆฌ์จ๋ณด๋ฉ
- ๋ฐฑ์ค
- LCs
- ๋นํธ๋งต
- ์ํฐ๋
- ํ๋ฆฌ์จ๋ณด๋ฉ
- C++
- ์ด๋ถํ์
- Today
- Total
Hello Ocean! ๐ผ
[์๊ณ ๋ฆฌ์ฆ ์คํฐ๋] ์๊ณ ์คํ #TRIANGLEPATH ๋ณธ๋ฌธ
[๋ฌธ์ ]
์ผ๊ฐํ ๋ชจ์์ผ๋ก ๋ฐฐ์น๋ ์๋ค์ด ์๋ค.
์ด ์๋ค์ ๋ํด์ ์์์๋ถํฐ ์๋๋ก ๋ด๋ ค์ค๋ ๊ฒฝ๋ก๋ฅผ ๋ง๋๋ ค๊ณ ํ๋ค.
์๋ ์ค๋ก ๋ด๋ ค๊ฐ ๋ ๋ง๋ค, ๋ฐ๋ก ์๋ซ์นธ์ด๋ ํ์นธ ์ค๋ฅธ์ชฝ ์๋์นธ์ผ๋ก ๋ด๋ ค๊ฐ ์ ์๋ค.
์ง๋์จ ๊ฒฝ๋ก์์ ๋ชจ๋ ์์ ํฉ์ ์ต๋๊ฐ์ ๊ตฌํด๋ผ.
[Input]
C (testcase ์)
๊ฐ testcase๋ง๋ค
n (์ธต์ ๊ฐ์)
n์ค์ ๊ฑธ์ณ ์ผ๊ฐํ ๊ฐ ๊ฐ๋ก์ค์ ์๋ ์ซ์ ์ ๋ ฅ
[Output]
๊ฐ testcase๋ง๋ค ์ต๋ ๊ฒฝ๋ก ์ซ์์ ํฉ
[ํ์ด]
์๊ณ ๋ฆฌ์ฆ์ ์์ ๊ฐ๋ค. dynamic programming์ ์ฌ์ฉํ๋ฉด, ๋ชจ๋ ๊ฒฝ๋ก๋ฅผ ํ๋์ฉ ์ดํด๋ณด์ง ์๊ณ , ๋ฐ๋ก ์์ ์นธ๊ณผ์ ๊ฒฝ์ฐ์์๋ง ๊ณ์ฐํด์ฃผ๋ฉด ๋๊ธฐ ๋๋ฌธ์ ๋ณต์ก๋๋ฅผ ํฌ๊ฒ ์ค์ผ ์ ์๋ค.
์ด ์๊ณ ๋ฆฌ์ฆ์ ๋ณต์ก๋๋ O(n^2)์ด๋ค.
์ข ๋ ํฐ input์ ์์๋ฅผ ์ดํด๋ณด๋ฉด
์ด๋ฐ ๊ฒฐ๊ณผ๊ฐ ๋์จ๋ค.
[์ฝ๋]
#include <stdio.h>
#include <iostream>
#include <algorithm>
using namespace std;
int main() {
int C,n;
int triangle[101][101];
int cache[101][101];
scanf_s("%d", &C);
for (int i = 0;i < C;i++) {
scanf_s("%d", &n);
for (int j = 0;j < n;j++) {
for (int k = 0;k <= j;k++) {
scanf_s("%d", &triangle[j][k]);
}
}
cache[0][0] = triangle[0][0];
int maxSum;
for (int j = 1;j < n;j++) {
maxSum = cache[j - 1][0];
cache[j][0] = triangle[j][0] + maxSum;
for (int k = 1;k <= j;k++) {
maxSum = (cache[j - 1][k] > cache[j - 1][k - 1]) ? cache[j - 1][k] : cache[j - 1][k - 1];
cache[j][k] = maxSum + triangle[j][k];
}
}
maxSum = *max_element(cache[n - 1], cache[n - 1] + n);
printf("%d\n",maxSum);
}
}
[์ ์ถ ๊ฒฐ๊ณผ]
'Algorithm' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[์๊ณ ๋ฆฌ์ฆ ์คํฐ๋] ๋ฐฑ์ค #9251 LCS (0) | 2020.04.19 |
---|---|
[์๊ณ ๋ฆฌ์ฆ ์คํฐ๋]์๊ณ ๋ฆฌ์ฆ ๋ฌธ์ ํด๊ฒฐ์ ๋ต LIS (0) | 2020.04.13 |
[์๊ณ ๋ฆฌ์ฆ ์คํฐ๋] ๋ฐฑ์ค #1417 ๊ตญํ์์ (0) | 2020.04.11 |
[C++] ๋ฐฐ์ด ๋ฉ๋ชจ๋ฆฌ ์ด๊ธฐํ (0) | 2020.04.11 |
[์๊ณ ๋ฆฌ์ฆ ์คํฐ๋] programmers, N์ผ๋ก ํํ (0) | 2020.04.04 |