728x90
https://programmers.co.kr/learn/courses/30/lessons/12905
처음에 단순 BFS문제인줄 알고 짱구를 굴려봤는데
도저히 BFS로는 답을 낼 방법이 떠오르지 않았다..
보통 이런경우 완전탐색이거나 DP인 경우가 많았던것같은데
완탐은 아닌것같고 DP로 풀면 어떨까 싶어서 코드를 짜봤다.
처음에진짜 어려웠던문제 도무지 기억이 안났다
푼 방식은 반복문을 돌며 현재값이 1일 경우
그 칸 (좌, 좌위, 위) 의 최소값 +1 로 값을 수정해주면된다
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
|
def solution(board):
answer = 1
max_num = 0
for i in range(len(board)):
for j in range(len(board[0])):
if i == 0 or j == 0:
if board[i][j] > max_num:
max_num = board[i][j]
else:
if board[i][j] == 1:
# board[i][j]가 1일경우 좌,좌위,위의 값중 최소값 +1로 숫자를 바꿔준다.
board[i][j] = min(board[i][j - 1], board[i - 1][j - 1], board[i - 1][j]) + 1
if board[i][j] > max_num:
max_num = board[i][j]
answer = max_num * max_num
return answer
|
cs |
728x90
'PS > 프로그래머스' 카테고리의 다른 글
[프로그래머스 LV 2] 쿼드압축 후 개수 세기 (파이썬/python) (0) | 2021.06.11 |
---|---|
[프로그래머스 LV 2] 방문길이 (파이썬/python) (0) | 2021.06.11 |
[프로그래머스 LV 2] 파일명 정렬 (파이썬/python) (0) | 2021.06.11 |
[프로그래머스 LV 2] 압축 (파이썬/python) (0) | 2021.06.11 |
[프로그래머스 LV 2] 괄호 변환 (파이썬/python) (0) | 2021.06.11 |