14503 - 로봇청소기*

2022. 5. 3. 13:582022/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