소스 코드
import sys
input = sys.stdin.readline
# 판의 크기
n = int(input())
# 판
board = [list(map(int,input().split())) for _ in range(n)]
# 현재까지 해당 위치로 오는 경우의 수 저장
visited = [[0]*n for _ in range(n)]
visited[0][0] = 1
# visited의 값이 0인 경우, 해당 위치로 올 수 있는 방법 없음
for q in range(n):
for w in range(n):
# board의 값이 0이면 이동 불가
# visited의 값이 0이면 해당 위치로 올 수 있는 방법 없음ㅈ
if visited[q][w] != 0 and board[q][w] != 0:
tmp = board[q][w]
if q+tmp < n:
visited[q+tmp][w] += visited[q][w]
if w+tmp < n:
visited[q][w+tmp] += visited[q][w]
print(visited[-1][-1])
해결 방법
1. n의 최대값이 100이므로 for문이 실행되는 최대 횟수는 100*100임
1-1. 시간적인 문제는 발생하지 않을 것?
2. visited의 값이 변경된 경우 == 해당 위치로 올 수 있는 방법이 존재함
3. 다음 위치로 이동할 때, 현재 위치에 도달할 수 있는 경우의 수를 누적해서 다음 위치에 넘겨준다
느낀 점
ps. 개인적인 코드와 코드를 작성의 이유를 적은 것입니다.
오류나 적절치 않은 문법이 존재할 수 있으며, 다른 분들께는 굉장히 비효율적인 방법으로 여겨질 수 있습니다.
혹시 개선 사항, 오류 및 문제에 대한 수정 사항 등을 댓글로 남겨주신다면 감사한 마음으로 배우고 수정하겠습니다.
'코딩 문제해결 > 문제 풀이.백준' 카테고리의 다른 글
[BOJ/백준 코딩] 도키도키 간식드리미 - PYTHON #12789 (0) | 2023.05.28 |
---|---|
[BOJ/백준 코딩] 그룹 단어 체커 - PYTHON #1316 (0) | 2023.05.27 |
[BOJ/백준 코딩] 단어 나누기 - PYTHON #1251 (0) | 2023.05.20 |
[BOJ/백준 코딩] 요세푸스 문제 - PYTHON #1158 (0) | 2022.01.12 |
[BOJ/백준 코딩] 큐 - PYTHON #10845 (0) | 2022.01.10 |