14503 - 로봇청소기*
2022. 5. 3. 13:58ㆍ2022/BaekJoon_삼성 SW 역량 테스트 기출
# idx = 0 : 서쪽 방향 기준 왼쪽은 남쪽으로 이동
# idx = 1 : 남쪽 방향 기준 왼쪽은 동쪽으로 이동
# idx = 2 : 동쪽 방향 기준 왼쪽은 북쪽으로 이동
# idx = 3 : 북쪽 방향 기준 왼쪽은 서쪽으로 이동
dx = [-1, 0, 1, 0]
dy = [0, 1, 0, -1]
N, M = map(int, input().split())
graph = []
x, y, d = map(int, input().split())
for i in range(N):
graph.append(list(map(int, input().split())))
# 처음 청소기가 있는 위치는 청소 완료로 초기화
endClean = 1; graph[x][y] = 2
def dfs(x, y, d):
global endClean
idx = d
for i in range(4):
idx = (idx-1)%4
nx = x + dx[idx]; ny = y + dy[idx]
if 0<=nx<N and 0<=ny<M:
if graph[nx][ny] == 0:
graph[nx][ny] = 2
endClean+=1
dfs(nx, ny, idx)
return
idx = (idx+2)%4
nx = x+dx[idx]; ny = y+dy[idx]
if graph[nx][ny] == 1:
return
else:
dfs(nx, ny, d)
dfs(x, y, d)
print(endClean)
'2022 > BaekJoon_삼성 SW 역량 테스트 기출' 카테고리의 다른 글
14889 - 스타트와 링크* (0) | 2022.05.03 |
---|---|
14888 - 연산자 끼워넣기 (0) | 2022.05.03 |
14502 - 연구소* (0) | 2022.05.03 |
14501 - 퇴사* (0) | 2022.05.03 |
14500 - 테트로미노* (0) | 2022.05.03 |