반응형
이번에는 dfs 문제입니다. 그렇게 어렵지는 않은데 조건을 자세히 읽지 않으시면 시간을 조금 낭비하실 수도 있겠네요.
https://www.acmicpc.net/problem/16173
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이면 힝을 출력하도록 시켰습니다.
반응형
'Problem Solving > BOJ' 카테고리의 다른 글
[BOJ][Python]1388번 풀이 (0) | 2022.05.24 |
---|---|
[BOJ][Python]15312번 풀이 (0) | 2022.05.24 |
[BOJ][Python]17202번 풀이 (0) | 2022.05.23 |
[BOJ][Python]23972번 풀이 (0) | 2022.05.21 |