Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 | 31 |
Tags
- Message Passing
- popup
- C언어로 쉽게 풀어쓴 자료구조
- 공부시간측정어플
- 백준
- 2156
- react
- 백준 7579
- 포도주시식
- nodejs
- 디스코드 봇
- 프로그래머스 #정수삼각형 #동적계획법
- Chrome Extension
- supabase
- 크롬 익스텐션
- webpack
- discord.js
- 캠스터디
- 파이썬
- X
- TypeScript
- 백준 #7568번 #파이썬 #동적계획법
- 갓생
- background script
- 자료구조
- content script
- 크롬 확장자
- 동적계획법
Archives
- Today
- Total
히치키치
[백준] 1973번 : 욕심쟁이 판다 - Python(파이썬) 본문
문제
https://www.acmicpc.net/problem/1937
1937번: 욕심쟁이 판다
n × n의 크기의 대나무 숲이 있다. 욕심쟁이 판다는 어떤 지역에서 대나무를 먹기 시작한다. 그리고 그 곳의 대나무를 다 먹어 치우면 상, 하, 좌, 우 중 한 곳으로 이동을 한다. 그리고 또 그곳에
www.acmicpc.net
풀이
- 재귀 & 동적 계획
- 시작점 지정X -> 각 지점에서 시작할 때 가장 긴 생존 일 구하기
- vist : 해당 지점 방문시 최대 생존 일 저장
코드
#문제 : https://www.acmicpc.net/problem/1937
from sys import setrecursionlimit
setrecursionlimit(10**9)
def dfs(i, j):
if visit[i][j] < 0: #해당 지점 한 번도 방문 X
visit[i][j] = 0 #지금 방문함
for d in range(4): #상하좌우 참색
x = i+dx[d]
y = j+dy[d]
if 0<=x<n and 0<=y<n and bamboo[i][j] < bamboo[x][y]:
# 범위 내 & 현재보다 더 많은 대나무 있는 경우
visit[i][j] = max(visit[i][j], dfs(x, y))
#상하좌우 중 가장 긴 생존 일 갱신
visit[i][j] += 1
return visit[i][j]
n = int(input())
bamboo = [list(map(int, input().split())) for _ in range(n)]
visit = [[-1] * n for _ in range(n)]
dx= [-1, 1, 0, 0]
dy=[0, 0, -1, 1]
ans = 0
for i in range(n):
for j in range(n):
ans = max(ans, dfs(i, j))
print(ans)
'알고리즘 스터디' 카테고리의 다른 글
[백준] 4485번 : 녹색 옷 입은 애가 젤다지 - Python(파이썬) (0) | 2021.08.10 |
---|---|
[백준] 1516번 : 개임 개발 - Python(파이썬) (0) | 2021.08.10 |
[백준] 2263번 : 트리의 순회 - Python(파이썬) (0) | 2021.08.03 |
[백준] 1520번 : 내리막길 - Python(파이썬) (0) | 2021.08.03 |
[백준] 4179번 : 불! - Python(파이썬) (0) | 2021.07.27 |
Comments