BOJ - 16173

주의·2024년 1월 7일
0

boj

목록 보기
54/214

백준 문제 링크
점프왕 쩰리 (Small)

❓접근법

  1. BFS를 사용했다.
  2. 문제에서 다음의 조건에 유의하자.
  • ‘쩰리’가 이동 가능한 방향은 오른쪽과 아래 뿐
  • ‘쩰리’가 한 번에 이동할 수 있는 칸의 수는, 현재 밟고 있는 칸에 쓰여 있는 수 만큼이다.
  1. while문 안에서 dx와 dy를 현재 밟고 있는 칸에 있는 수로 설정했다.
  2. 방문 처리를 하고
    queue에는 새로운 좌표와 새로운 좌표 값의 칸에 있는 수를 같이 넣어줬다.
  3. visited의 도착 지점이 False이면 Hing,
    True이면 HaruHaru를 출력하면 끝!

👌🏻코드

from collections import deque

N = int(input())
graph = []
for _ in range(N):
    graph.append(list(map(int, input().split())))

start_x, start_y = 0,0
end_x, end_y = N-1, N-1


visited = [[False] * N for _ in range(N)]

def bfs(x,y):
    queue = deque()
    queue.append((x,y,graph[x][y]))
    
    visited[x][y] = True
    
    while queue:
        x,y,graph[x][y] = queue.popleft()
        
        dx = [0,graph[x][y]]
        dy = [graph[x][y],0]
        
        if (x,y) == (end_x, end_y):
            break
        
        for d in range(2):
            nx = x + dx[d]
            ny = y + dy[d]
            
            if (0<=nx<N) and (0<=ny<N) and not visited[nx][ny] :
                visited[nx][ny] = True
                queue.append((nx,ny,graph[nx][ny]))
                
bfs(start_x, start_y)               
if visited[N-1][N-1] == False:
    print('Hing')
else:
    print('HaruHaru')

0개의 댓글