Skip to content

Conversation

@sukangpunch
Copy link
Contributor

문제 정보

풀이 방법

간단히 어떤 방식으로 풀었는지 설명해주세요.

시간 복잡도 : O(NM)
처음에 브루트 포스로 시도했다가 34퍼에서 시간초과 발생
알고리즘을 검색해 보니 DP 를 활용하였다.

왼쪽 위 좌표와 오른쪽 아래 좌표가 2차원에서 사각형을 기준 잡는 좌표이다.
그래서 오른쪽 아래 좌표를 기준으로, 왼쪽, 왼위, 위쪽 좌표가 유효하고 오른쪽 아래 좌표도 유효하다면 하나의 2X2 정사각형이 유효함을 알 수 있다.

이를 DP 로 나타낸다면, 최소 2X2를 만들 수 없는 끝 좌표 이며 유효하다면 1로 초기화, 유효하지 않은좌표(돌, 나무) 는 0으로 초기화
이후 반복하면서 해당 좌표의 왼, 왼위, 위 를 확인했을 때, 최소 값을 선택하고, 그 값에 1을 더하게 된다면 현재 좌표 에서의 최대 정사각형 크기를 구할 수 있다.
최솟값을 구해서 1을 더하는 이유는, 자신의 이전 좌표가 만드는 최대 사각형이 유효 해야만, 최대 사각형을 만들 수 있기 때문이다.
예를 들어 3X3을 구할 때, 왼, 왼위, 위 중 하나라도 2X2 미만이 존재한다면, 3X3 범위에 유효하지 않은 좌표가 들어있는 것이기 때문.

체크리스트

  • 코드가 정상적으로 실행되나요?
  • 커밋 메시지가 컨벤션을 따르나요?
  • 파일명이 올바른가요? ({닉네임}.{확장자})

추가 코멘트

(선택사항) 추가로 공유하고 싶은 내용이 있다면 작성해주세요.

@github-actions github-actions bot added weekly-challenge 주차별 공통 문제 백준 백준 문제 labels Jan 28, 2026
@sukangpunch sukangpunch self-assigned this Jan 30, 2026
@sukangpunch sukangpunch merged commit 4387931 into main Jan 30, 2026
1 check passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

weekly-challenge 주차별 공통 문제 백준 백준 문제

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants