Check Point !
( 해당사항 ✓체크 )
막힘 없이 수월하게 풀린 문제인가?
1시간이내로 풀렸던 문제인가?
1시간 이상 or 며칠을 두고 풀어봤더니 풀린 문제인가? ✅
시간을 써도 도무지 풀 수 없는 문제인가?
솔루션을 찾아봤는가? ✅
난이도 체감
최상
상
중 ✅
하
<이해도>
완벽히 이해
다소 헷갈리는 부분들이 있음
이해 못함
<덧붙일 말>
BFS문제 유형이랑 너무 닳았는데 quequ를 사용하진 않는다.
n,m = map(int,input().split()) # 세로,가로
x,y, direction = map(int,input().split())
board = [list(map(int,input().split())) for _ in range(m)]
dist = [[0]* n for _ in range(n)]
dx = [0,1,0,-1]
dy = [-1,0,1,0]
dist[x][y] = 1
def turn_left():
global direction
direction -= 1
if direction == -1:
direction = 3
cnt = 1
turn_time = 0
while True:
turn_left()
nx = x + dx[direction]
ny = y + dy[direction]
if dist[nx][ny] == 0 and board[nx][ny] == 0:
dist[nx][ny] = 1
x = nx
y = ny
cnt += 1
turn_time = 0
continue
else:
turn_time += 1
if turn_time == 4:
nx = x - dx[direction]
ny = y - dy[direction]
if board[nx][ny] != 1 and dist[nx][ny] == 1:
x = nx
y = ny
else:
break
turn_time = 0
print(cnt)
direction부분을 설정하는 부분과, 해당 이동하는 방향자체를 수정하는 문제가 독특했다.
이에따른 왔던방향으로 다시 뒤로 이동하는 조건을 달아주는방법이 까다롭다 문제를 많이 풀어봐야 할 것 같다.