-
https://school.programmers.co.kr/learn/courses/30/lessons/12913
아이디어
DP를 이용하여 이전 열에서의 최댓값을 더 해가며 찾을 수 있습니다.
#include <iostream> #include <vector> using namespace std; int max(int a, int b) { return a > b ? a : b; } int findMax(vector<int>& v, int idx) { int temp = 0; for (int i = 0; i < 4; i++) { //중복은 제외 if (i != idx) temp = max(temp, v[i]); } return temp; } int solution(vector<vector<int>> land) { int answer = 0; for (int i = 1; i < land.size(); i++) { for (int j = 0; j < 4; j++) { //해당 열에서의 최댓값 land[i][j] += findMax(land[i - 1], j); answer = max(answer, land[i][j]); } } return answer; }
'알고리즘 > 프로그래머스' 카테고리의 다른 글
Programers 자릿수 더하기 / C++ (0) 2022.12.03 Programers JadenCase 문자열 만들기 / C++ (0) 2022.12.03 Programers 약수의 합 / C++ (0) 2022.12.03 Programers 할인 행사 / C++ (0) 2022.12.03 Programers 귤 고르기 / C++ (1) 2022.12.03 댓글