코테 노트/백준

백준 16173 점프왕 쩰리 (Small) Python3

화요밍 2021. 8. 19. 10:22
728x90
반응형

https://www.acmicpc.net/problem/16173

 

16173번: 점프왕 쩰리 (Small)

쩰리는 맨 왼쪽 위의 칸에서 출발해 (행, 열)로 나타낸 좌표계로,  (1, 1) -> (2, 1) -> (3, 1) -> (3, 3)으로 이동해 게임에서 승리할 수 있다.

www.acmicpc.net

 

 

GitHub - hwayeon351/BEAKJOON-Algorithms: 백준 알고리즘 소스 코드 모음

백준 알고리즘 소스 코드 모음. Contribute to hwayeon351/BEAKJOON-Algorithms development by creating an account on GitHub.

github.com

import sys
def dfs(x, y):
    global ck
    if ck: return
    if x>=N or y>=N: return
    if x==N-1 and y==N-1:
        ck = True
        return
    jump = area[y][x]
    if jump == 0: return
    dfs(x+jump, y)
    dfs(x, y+jump)

N = int(sys.stdin.readline())
area = []
ck = False
for _ in range(N):
    area.append(list(map(int, sys.stdin.readline().split())))
dfs(0, 0)
if ck: print("HaruHaru")
else: print("Hing")

풀이 과정

풀이 시간 20분

import sys
def dfs(x, y):
    global ck
    #이미 성공했다면, return
    if ck: return
    #구역을 벗어난 경우, return
    if x>=N or y>=N: return
    #끝점에 도달한 경우, 성공
    if x==N-1 and y==N-1:
        ck = True
        return
    jump = area[y][x]
    #칸에 쓰여있는 수가 0인 경우, 재귀가 무한정 호출되므로 종료시킨다
    if jump == 0: return
    dfs(x+jump, y)
    dfs(x, y+jump)

N = int(sys.stdin.readline())
area = []

#성공-True, 실패-False
ck = False
for _ in range(N):
    area.append(list(map(int, sys.stdin.readline().split())))
    
#시작점 (x, y) = (0, 0)
dfs(0, 0)
if ck: print("HaruHaru")
else: print("Hing")
#시간복잡도 = O(V+E) = O(N+2N) -> O(N), 공간복잡도 = O(N^2)

 

728x90
반응형

'코테 노트 > 백준' 카테고리의 다른 글

백준 2251 물통 Python 3  (0) 2021.08.20
백준 17779 게리맨더링 2 C++  (0) 2021.08.19
백준 17142 연구소 3 C++  (0) 2021.08.18
백준 1325 효율적인 해킹 C++/PyPy  (0) 2021.08.18
백준 11659 구간 합 구하기 4 Python3  (0) 2021.08.18