https://school.programmers.co.kr/learn/courses/30/lessons/12905?language=swift
풀이 및 소스코드
DP문제.
1, 1에서부터 비교를 시작해나간다.
[x][y], [x-1][y], [x][y-1], [x-1][y-1] 중 가장 작은것에 1을 더해나간다.
이유는 한 번만 코드를 따라가봐도 알게됨..
1, 1에서 시작하므로 [[1, 0], [0, 0]]의 경우 정답은 1인데 0이 출력될것이다.
그러므로 초기값은 board[0]의 max로 해두자.
import Foundation
func solution(_ board:[[Int]]) -> Int
{
var answer:Int = board[0].max() ?? 0
var map = board
for x in 1..<board.count{
for y in 1..<board[0].count{
if map[x][y] != 0{
map[x][y] = min(map[x][y-1], map[x-1][y], map[x-1][y-1]) + 1
if map[x][y] > answer{
answer = map[x][y]
}
}
}
}
return answer * answer
}