일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 코딩
- 정렬
- ENFJ
- 3
- 백준풀이
- knuth_optimization
- DP
- 2
- HTML
- 백준
- 더하기 시리즈
- 정규 표현식 #문자열
- 구현
- DFS
- 브루트포스
- 오늘의 계획
- 파이썬
- 1
- 백트래킹
- BFS
- 다이나믹 프로그래밍
- 웹 페이지 입문
- Greedy
- 12969
- 11066
- 수 정렬하기2
- 컴공
- 오픽
- Python
- 스택
- Today
- Total
코딩하는 Fug
1890 점프 본문
https://www.acmicpc.net/problem/1890
#dp
1890번: 점프
첫째 줄에 게임 판의 크기 N (4 ≤ N ≤ 100)이 주어진다. 그 다음 N개 줄에는 각 칸에 적혀져 있는 수가 N개씩 주어진다. 칸에 적혀있는 수는 0보다 크거나 같고, 9보다 작거나 같은 정수이며, 가장
www.acmicpc.net
#1890 점프
import sys
input=sys.stdin.readline
#스탠다드 인풋
n=int(input())
#n 입력
dp=[[0 for i in range(n)] for j in range(n)]
#dp 생성
dp[0][0]=1
#시작점 dp 는 1 (개수이므로 시작점으로 오는 경우의 개수 1)
for i in range(n):
d=list(map(int,input().split()))
for j in range(n):
if dp[i][j]==0:
continue
#만약 시작점을 거치지 않았다면 0
if i+d[j]<n:
dp[i+d[j]][j]+=dp[i][j]
if j+d[j]<n:
dp[i][j+d[j]]+=dp[i][j]
#x y값이 조건에 맞는지를 확인하여 out of range 를 걷어낸 후 경우의 수 입력
print(dp[n-1][n-1]//4)
#마지막에 있는 것도 for문을 돌았을 것이기 때문에 (답+답)+(답+답) 을 거쳐서 dp[n-1][n-1]이 나왔을 것이다. 나누기 4 를 해준다.
#사소한 실수가 엄청난 시간을 잡아먹어버렸다. 마지막 수도 돈다는 것을 아는데는 케이스를 하나하나 뜯어보고 찾았다. 아직 많이 부족하다 열심히 하자..
'백준풀이-python' 카테고리의 다른 글
9095 1,2,3 더하기 (0) | 2021.10.13 |
---|---|
15989 1,2,3 더하기 4 (0) | 2021.10.13 |
15486 퇴사 2 (0) | 2021.10.12 |
16930 달리기 (0) | 2021.10.08 |
17086 아기 상어 2 (0) | 2021.10.05 |