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 |