본문 바로가기
Problem Solving/BOJ

[BOJ][Python]16173번 풀이

by NoiB 2022. 5. 23.
반응형

이번에는 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이면 힝을 출력하도록 시켰습니다.

반응형

'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