오늘의 알고리즘

[C++] 백준 2096 내려가기

하늘하늘 . 2022. 10. 17. 19:44
#include <iostream>
#include <vector>
 
int N = 0;
int MaxDP[3] = {};
int MinDP[3] = {};
 
int main() 
{
	std::cin >> N;
 
	for (int i = 1; i <= N; ++i)
	{
		int iFirst = 0;
		int iSecond = 0;
		int iThird = 0;
 
		std::cin >> iFirst >> iSecond >> iThird;
 
		int iMaxFirst = MaxDP[0];
		int iMaxSecond = MaxDP[1];
		int iMaxThird = MaxDP[2];
		int iMinFirst = MinDP[0];
		int iMinSecond = MinDP[1];
		int iMinThird = MinDP[2];
 
		MaxDP[0] = std::max(iMaxFirst + iFirst, iMaxSecond + iFirst);
		MaxDP[1] = std::max(std::max(iMaxFirst + iSecond, iMaxSecond + iSecond), iMaxThird + iSecond);
		MaxDP[2] = std::max(iMaxSecond + iThird, iMaxThird + iThird);
 
		MinDP[0] = std::min(iMinFirst + iFirst, iMinSecond + iFirst);
		MinDP[1] = std::min(std::min(iMinFirst + iSecond, iMinSecond + iSecond), iMinThird + iSecond);
		MinDP[2] = std::min(iMinSecond + iThird, iMinThird + iThird);
	}
 
	std::cout << std::max(std::max(MaxDP[0], MaxDP[1]), MaxDP[2]) << " " << std::min(std::min(MinDP[0], MinDP[1]), MinDP[2]);
 
	return 0;
}
 
티스토리가 돌아왔네여 다시 시작하겠습니다~

메모리초과가 너무 많이 나길래 이게 왜... 왜... 이러다가 메모리 제한이 4mb인걸 확인했습니다...

너무 편하게 풀 생각을 했나봅니다. 메모리도 아끼면서 풀어야하는데 이건 좀 생각을 다시 하게? 만들어줬습니다.

이전걸 기억해놓고 풀고 하면 메모리 안으로 들어옵니다.