티스토리 뷰
728x90
문제
풀이 및 소스코드
처음엔 bfs로 arr[n-1][n-1]까지 가는 경우의 수를 구해주려 했으나
메모리 초과가 떴다 ㅠㅠㅠ 코드는 아래와 같았다.
import sys
from collections import deque
input = sys.stdin.readline
n = int(input())
arr = [list(map(int, input().split())) for _ in range(n)]
que = deque()
que.append([0,0])
res = 0
while que:
nowx, nowy = que.popleft()
if nowx==n-1 and nowy==n-1:
res += 1
continue
if nowx+arr[nowy][nowx]<n:
que.append([nowx+arr[nowy][nowx], nowy])
if nowy+arr[nowy][nowx]<n:
que.append([ nowx, nowy+arr[nowy][nowx]])
print(res)
그래서 dp로 풀어주기로 했다.
사실 dp 문제긴 하지만 dp로 풀기싫었는데... 풀 수 밖에 없었다.
dp 배열을 dp[0][0] 만 1로 나머지 다 0으로 초기화 시켜줬다.
그리고 x, y 가 n-1인 경우엔 dp[-1][-1]을 출력해줬고,
시간을 조금이나마 단축하기 위해서 dp[y][x]가 1보다 큰 경우에만 돌려줬다.
import sys
from collections import deque
input = sys.stdin.readline
n = int(input())
arr = [list(map(int, input().split())) for _ in range(n)]
dp = [[0]*n for _ in range(n)]
dp[0][0] = 1
for y in range(n):
for x in range(n):
if y == n-1 and x == n-1:
break
if dp[y][x]>=1:
dy = y+arr[y][x]
dx = x+arr[y][x]
if 0<=dy<n:
dp[dy][x] += dp[y][x]
if 0<=dx<n:
dp[y][dx] += dp[y][x]
print(dp[-1][-1])
반응형
'Coding - Algo > python' 카테고리의 다른 글
[백준] 1789번:수들의 합 (python 파이썬) (0) | 2021.03.16 |
---|---|
[백준] 14494번:다이나믹이 뭐에요? (python 파이썬) (0) | 2021.03.16 |
[백준] 11723번:집합 (python 파이썬) (0) | 2021.03.15 |
[백준] 9095번:1, 2, 3 더하기 (python 파이썬) (0) | 2021.03.12 |
[백준] 15681번:트리와 쿼리 (python 파이썬) (0) | 2021.03.09 |
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 1240 자바
- 3996 자바
- swea 1240
- ubuntu
- 백준파이썬
- 백준 17144
- 프로그래머스
- 백준
- union-find
- swea 타일링 자바
- 백준 풀이
- swea 4070 타일링
- 삼성청년SW아카데미
- 타일링 자바
- 프로그래머스 파이썬
- 더 맵게
- 메뉴리뉴얼 풀이
- 우분투
- 파이썬 풀이
- yoloV3
- 파이썬
- 1699 자바
- 백준 dp 문제
- 프로그래머스 자바
- 프로그래머스 더 맵게
- poker swea
- SSAFY
- SWEA
- swea 타일링
- swea 1240 자바
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
글 보관함