[BOJ] 백준 14503 로봇 청소기 python
2024. 4. 12. 01:52ㆍAlgorithm
import sys
sys.setrecursionlimit(10000)
N,M = map(int,input().split())
x,y,di = map(int,input().split())
mapp = []
for _ in range (0,N):
a = list(map(int,input().split()))
mapp.append(a)
direction =[[-1,0],[0,1],[1,0],[0,-1]]
check = [[False for _ in range (0,M)] for _ in range (0,N)]
#di는 방향을 나타내고 있는 것
def algo(x,y,di):
cnt = 0
while True:
if mapp[x][y] == 0 and check[x][y] == False:
cnt += 1
check[x][y] = True
#첫번째 스텝에서 진행하는 자리가 더러우면 청소하는 경우
#자신의 4방향 탐지하기
jud = True
for i in range (1,5):
#반시계방향부터 탐색한다는 것에 유의
t = (di - i) % 4
xx = x + direction[t][0]
yy = y + direction[t][1]
if 0 <= xx < N and 0 <= yy < M:
if mapp[xx][yy] == 0 and check[xx][yy] == False:
jud = False
x,y,di = xx,yy,t
break
if jud == True:
a = x - direction[di][0]
b = y - direction[di][1]
if mapp[a][b] == 1 or (0 > a or a == N or 0 > b or M == b):
print(cnt)
return
x,y = a,b
algo(x,y,di)
시간이 좀 오래 걸렸던 문제 ... 다 짜놓고서 이상한 곳에서 뻘짓을 많이했던 기억이 ....
'Algorithm' 카테고리의 다른 글
[BOJ] 백준 1198 삼각형으로 자르기 python (0) | 2024.05.13 |
---|---|
[BOJ] 백준 20920 영단어 암기는 괴로워 (0) | 2024.05.12 |
[BOJ] 백준 15683 감시 python (0) | 2024.04.10 |
[BOJ] 백준 14888 연산자 끼워넣기 python (0) | 2024.04.09 |
[BOJ] 16236 아기상어 python (0) | 2024.04.09 |