본문 바로가기

코딩테스트

[프로그래머스(Programmers)/Level2](Python)가장 큰 정사각형

<내코드>

<풀이과정>
DP를 이용해 박스를 나눌수 있는 최소크기(1*1은 예외로 처리하고, 2*2 부터)로 나눠서 우측 하단이 1 일때만 둘러쌓인 값들 중

최솟값에 +1 한값을 우측 하단에 넣어준다.(다음 연산에도 앞전 계산값을 이용하기 위해서) 추가적으로 _max에 바뀌는 값들중 최댓값을

제곱해서 리턴하면 원하는 결과값이 나오게 된다.

 

<느낀점>

처음에 완전탐색으로 풀었는데 당연하게도 시간초과가 떠서 더 쉬운방법을 생각하던 중, 동적계획법(DP)로 푼 알고리즘을 찾았고,

아이디어를 따와서 풀었다. 동적계획법에 관한 공부도 해야할 것 같다.