본문 바로가기
Development/Informatics

[KOI]두부 모판 자르기(bean curd)

by True Life 2016. 10. 13.


[KOI]두부 모판 자르기(bean curd)


개인적으로 좋아하는 문제다.

2006년도 정보올림피아드 고등부 2번이다.

이걸 풀 땐 정말 정보에 대한 의지가 불타올랐던 시절이었는데..


암튼 시작한다.

<문제>


결국 두부모판을 어떻게 하면 가장 비싸게 팔수 있을지 쪼개라는 거다.

이런건 누가봐도 백트랙킹이다.


그런데 어떻게 백트랙킹을 해야하는가 - 이게 관건이다.

어려웠지만 그때 죽이되든 밥이되든 해서 풀었다.

지금 보면 참 대견하다.


일단 백트랙킹을 하되 일반적인 재귀적, 그런 백트랙킹은 안된다.

아 물론 될수 있겠지만 나로써 별로 상상이 안간다.


그리고 원래 재귀는 안할수록 좋다고 하지 않은가.

이건 재귀의 내부 스택을 이용하지 않은 그냥 스택 자체를 만들어서 풀어야된다고 결론지었다. 그리고 스택을 직접 만든 만큼 지금까지의 상태를 보존할 수 있는 다이나믹적 요소도 들어가야 한다.


시간복잡도는 2^(2N)*N 이 나온다.


다이나믹 점화식

D ij = i*i까지의 행렬만을 다루며 마지막 테두리의 모양이 j의 상태일 때의 최대치


막상 이 아이디어만 생각하면 별거 없다.


소스는 아래와 같다.

주석은 임의로 넣었고 디버깅용 코드가 약간 추가되있다.






'Development > Informatics' 카테고리의 다른 글

[자료구조]이진탐색트리-Binary Search Tree  (0) 2014.06.26