Problem Solving/BOJ
[BOJ][Python]16173번 풀이
NoiB
2022. 5. 23. 22:49
반응형
이번에는 dfs 문제입니다. 그렇게 어렵지는 않은데 조건을 자세히 읽지 않으시면 시간을 조금 낭비하실 수도 있겠네요.
https://www.acmicpc.net/problem/16173
16173번: 점프왕 쩰리 (Small)
쩰리는 맨 왼쪽 위의 칸에서 출발해 (행, 열)로 나타낸 좌표계로, (1, 1) -> (2, 1) -> (3, 1) -> (3, 3)으로 이동해 게임에서 승리할 수 있다.
www.acmicpc.net
import sys
sys.setrecursionlimit(10000)
def sol(r,c):
global cnt
if r >= n or c >= n:
return
if b[r][c] == -1:
cnt += 1
return
if b[r][c] == 0:
return
sol(r+b[r][c],c)
sol(r,c+b[r][c])
n = int(input())
b = [list(map(int, input().split())) for _ in range(n)]
cnt = 0
sol(0,0)
if cnt >= 1:
print('HaruHaru')
else:
print('Hing')
문제의 조건 중에 점프 거리가 0인 발판이 있는 경우가 있습니다. 처음에는 별 생각없이 재귀 제한이 걸리길래 리미트를 늘려줬는데도 계속 런타임 에러가 나서 무슨 일인가 싶었는데 0때문에 걸리는 것 같더라구요. 좀 더 간단하게 짜는 법도 있을 것 같지만 해당 문제는 여기서 마무리 하도록 하겠습니다. 간략하게 코드 설명을 드리면 좌표를 파라미터로 하는 함수를 이용해서 재귀로 구성한다음 조건에 맞으면 카운팅해서 '카운팅 값이 1이상이면 한 번 이상 골에 도달했다는 것'이니 하루하루를, 0이면 힝을 출력하도록 시켰습니다.
반응형