1915 가장 큰 정사각형 과 거의 같은 문제이다.
다른 점은 넓이 대신 한변의 길이만 출력하면 된다.
소스
2014년 9월 1일 월요일
1915 가장 큰 정사각형
n * m의 배열에 0,1 의 값이 있는데, 1의 값으로 채워져 있는 가장 큰 정사각형의 넓이를 구하는 문제이다.
이 문제는 DP로 해결이 가능한데, dp를 구성하는 방법은 다음과 같이 하면 된다.
(i = 0~m-1, j = 0~n-1)
dp[0][j] = 좌표값이 1이면 1, 아니면 0.
dp[i][0] = 좌표값이 1이면 1, 아니면 0.
i,j 좌표값이 1일 때,
dp[i][j] = 1+MIN(dp[i-1][j],dp[i][j-1],dp[i-1][j-1])
이 때 나온 dp 값중에 최대값을 저장해서, 넓이를 출력하면 된다.
소스
이 문제는 DP로 해결이 가능한데, dp를 구성하는 방법은 다음과 같이 하면 된다.
(i = 0~m-1, j = 0~n-1)
dp[0][j] = 좌표값이 1이면 1, 아니면 0.
dp[i][0] = 좌표값이 1이면 1, 아니면 0.
i,j 좌표값이 1일 때,
dp[i][j] = 1+MIN(dp[i-1][j],dp[i][j-1],dp[i-1][j-1])
이 때 나온 dp 값중에 최대값을 저장해서, 넓이를 출력하면 된다.
소스
1236 성 지키기
주어진 크기의 모든 행, 모든 열에 경비원을 한명씩은 배치하려고 할 때 추가로 배치해야하는 경비원의 수의 최솟값을 찾는 문제이다.
각 행과 각 열에 경비원이 몇명이나 배치되어있는지 확인하고,
행에 비어있는 경비원의 수와 열에 비어있는 경비원의 수중 큰값을 고르면 필요한 경비원의 수의 최소가 된다.
한 경비원이 한 행,한 열을 차지하도록 놓을 수 있기 때문이다.
소스
각 행과 각 열에 경비원이 몇명이나 배치되어있는지 확인하고,
행에 비어있는 경비원의 수와 열에 비어있는 경비원의 수중 큰값을 고르면 필요한 경비원의 수의 최소가 된다.
한 경비원이 한 행,한 열을 차지하도록 놓을 수 있기 때문이다.
소스
피드 구독하기:
글 (Atom)