본문 바로가기
프로그래밍/알고리즘 & 자료구조

백준 14497 : 주난의 난 with 파이썬

by Play_With 2024. 1. 28.
반응형

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

 

14497번: 주난의 난(難)

주난이는 크게 화가 났다. 책상 서랍 안에 몰래 먹으려고 숨겨둔 초코바가 사라졌기 때문이다. 주난이는 미쳐 날뛰기 시작했다. 사실, 진짜로 뛰기 시작했다. ‘쿵... 쿵...’ 주난이는 점프의 파

www.acmicpc.net

 

# 포인트

1. #이 포함된 map을 받아와야 하기때문에 int로 변경할 것 없이 그냥 input().strip()으로 받아온다.

2. 좌표는 현재 위치(사각형)의 왼쪽위에 있기 때문에 y-1, x-1처럼 -1씩 해줘야 한다.

3. 숨바꼭질3와 비슷한 구성

친구가 없는 경우에는 그냥 통과할 수 있지만, 친구가 있거나, #인 경우에는 +점프를 해야 통과할 수 있다

from collections import deque

n,m=map(int,input().split())
x1,y1,x2,y2=map(int,input().split())
D=[list(input().strip()) for _ in range(n)]
S=[[-1]*m for _ in range(n)]

q=deque()
q.append((x1-1,y1-1))
S[x1-1][y1-1]=0
dx,dy=[0,0,1,-1],[1,-1,0,0]

while q:
    x,y=q.popleft()
    for i in range(4):
        nx,ny=x+dx[i],y+dy[i]
        if 0<=nx<n and 0<=ny<m and S[nx][ny]==-1:
            if D[nx][ny]=='0': # 친구가 없는 경우에는 그냥 통과할 수 있는반면
                q.appendleft((nx,ny))
                S[nx][ny]=S[x][y]
            else:              # 친구가 있거나, #인 경우에는 +점프를 해야 통과할 수 있다
                q.append((nx,ny))
                S[nx][ny]=S[x][y]+1
                
print(S[x2-1][y2-1])
반응형

댓글