Skip to content

[Algorithm] 가장 큰 정사각형 찾기 #184

Description

@hwangJi-dev

💬 문제

https://school.programmers.co.kr/learn/courses/30/lessons/12905


💬 Idea

  • 처음에는 가장 긴 너비를 찾아서 2 이상일 경우 해당 영역의 모든 좌표가 1이라면 sqaure를 만들 수 있으므로 일일이 최고 너비를 찾아줬다. 그런데 이렇게 구현하니 효율성을 통과하지 못했다. 따라서 다른 풀이를 참고해서 풀었다!
  • DP… ^~^ .. 신세계 발견..
    • 해당 인덱스의 map 값이 1일 경우 “왼쪽, 위쪽, 좌측 상단(↖️)의 최소값 +1 이 현재 길이가된다”는 원리를 이용해서 풀어주었다.

💬 풀이

import Foundation
func solution(_ board:[[Int]])->Int{varsqareCheckBoard= board
varmaxWidth=0foriin1..<board.count {forjin1..<board[0].count {ifboard[i][j]==1{sqareCheckBoard[i][j]=min(sqareCheckBoard[i-1][j-1],sqareCheckBoard[i-1][j],sqareCheckBoard[i][j-1])+1if maxWidth <sqareCheckBoard[i][j]{
maxWidth =sqareCheckBoard[i][j]}}}}if board.count ==1 || board[0].count ==1{foriin0..<board.count {forjin0..<board[0].count {if maxWidth <sqareCheckBoard[i][j]{
maxWidth =sqareCheckBoard[i][j]}}}}return maxWidth * maxWidth
}

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions