티스토리 뷰
< 해설 >
DP 문제! 어렵진 않다. 왜 for문을 돌면서 각 행의 최대값을 찾는 방식은 안되나요? 라는 의문점이 생길 수 있다. 이는 질문하기 란에 다른분이 들어준 예시를 보면 이해가 된다.
이제 문제를 살펴보자. 열은 무조건 4개이다. (이걸 늦게봐서 살짝 헷갈림 ㅠㅠ)
그러므로 land[0], land[1], land[2], land[3] 만 있게 된다. 그렇다면
land의 1행의 인덱스 0번의 최대 누적값을 찾기 위해서는 land 0 행의 0번 인덱스를 제외한 1,2,3 인덱스의 최대값만 찾으면 된다!
방식은 Top-Down 방식이나 Bottom-Up 방식 둘중 아무거나 써도 된다. 난 for문 편하게 쓰려고 Top-Down 방식 썼다.
< 문제 >
< 풀이 >
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int solution(vector<vector<int>> land)
{
int answer = 0;
int maxIDX = -1;
for(auto l : land)
{
l[0] += max( max(l[1], l[2]), l[3]);
l[1] += max( max(l[0], l[2]), l[3]);
l[2] += max( max(l[0], l[1]), l[3]);
l[3] += max( max(l[0], l[1]), l[2]);
}
int size = land.size() - 1;
int answer01 = max(land[size][0], land[size][1]);
int answer02 = max(land[size][2], land[size][3]);
return answer = max(answer01, answer02);
}
'공부 > 코딩테스트' 카테고리의 다른 글
[ 프로그래머스 C++ ] 귤 고르기 lv2 (0) | 2023.05.30 |
---|---|
[ 프로그래머스 C++ ] 무인도 여행 lv2 (0) | 2023.05.23 |
[ 프로그래머스 C++ ] 경주로 건설 lv3 (0) | 2023.05.19 |
[ 프로그래머스 C++ ] 선입 선출 스케줄링 lv3 (0) | 2023.05.18 |
[ 프로그래머스 C++ ] 파괴되지 않은 건물 lv3 (1) | 2023.05.16 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- level3
- Unreal 5.1
- 힙
- greedy
- DFS
- Heap
- BFS
- C++
- 재귀
- 스택/큐
- UE5
- 디자인 패턴
- 탐욕법
- sort
- LV3
- 해시
- 고득점 Kit
- FPS
- 고득점kit
- 누적합
- 채팅서버
- 완전탐색
- LV2
- 너비우선탐색
- 프로그래머스
- IMGUI
- 데디케이티드
- 정렬
- Ue
- 개인공부
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
글 보관함