백준 14503. 로봇 청소기

2023. 9. 22. 11:10·백준

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

 

14503번: 로봇 청소기

첫째 줄에 방의 크기 $N$과 $M$이 입력된다. $(3 \le N, M \le 50)$  둘째 줄에 처음에 로봇 청소기가 있는 칸의 좌표 $(r, c)$와 처음에 로봇 청소기가 바라보는 방향 $d$가 입력된다. $d$가 $0$인 경우 북쪽

www.acmicpc.net

di=[0,1,0,-1]
dj=[-1,0,1,0]

d_lst = [[0,1,2,3],[3,0,1,2],[2,3,0,1],[1,2,3,0]]  # 바라보는 방향에 따른 좌하우상 순 탐색
back = [1,0,3,2]

def bfs(x,y,d):
    cnt = 1
    q=[(x,y)]
    arr[x][y] = 2
    while q:
        i, j = q.pop(0)
        for k in range(4):
            ni, nj = i+di[d_lst[d][k]], j+dj[d_lst[d][k]]
            if 0<=ni<N and 0<=nj<M and arr[ni][nj] == 0: # 청소할 곳 있으면
                d = (d-k+3)%4  # 청소할 곳으로 방향전환
                arr[ni][nj] = 2 # 해당 자리 청소
                cnt += 1
                q.append((ni,nj))   # 한칸 전진
                break  # 전진했으니 다시 탐색
        else: # 청소할 곳 없으면
            ki, kj = i+di[back[d]], j+dj[back[d]]
            if 0<=ki<N and 0<=kj<M and arr[ki][kj] != 1: # 방향 유지한채로 후진할수있으면
                q.append((ki,kj))  # 후진
            else:   # 벽이라 후진할 수 없으면
                return cnt  # 함수 종료
    return cnt

N, M = map(int, input().split())
r,c,d = map(int, input().split())  # 로봇청소기의 초기상태
# d= 0 북 1 동 2 남 3 서
arr = [list(map(int,input().split())) for _ in range(N)]
# 0 -> 청소x / 1 -> 벽
print(bfs(r,c,d))

 

저작자표시 (새창열림)

'백준' 카테고리의 다른 글

백준 1459. 걷기  (0) 2023.10.18
백준 2195. 문자열 복사  (0) 2023.10.10
백준 9205. 맥주 마시면서 걸어가기  (0) 2023.09.21
백준 2573. 빙산  (0) 2023.09.20
백준 2468. 안전 영역  (0) 2023.09.20
'백준' 카테고리의 다른 글
  • 백준 1459. 걷기
  • 백준 2195. 문자열 복사
  • 백준 9205. 맥주 마시면서 걸어가기
  • 백준 2573. 빙산
버그잡는고양이발
버그잡는고양이발
주니어 개발자입니다!
  • 버그잡는고양이발
    지극히평범한개발블로그
    버그잡는고양이발
  • 전체
    오늘
    어제
    • 분류 전체보기 (382)
      • React (16)
      • Next.js (5)
      • Javascript (5)
      • Typescript (4)
      • Node.js (2)
      • Cs (16)
      • 트러블 슈팅 (5)
      • Html (1)
      • Css (3)
      • Django (0)
      • vue (0)
      • Java (2)
      • Python (0)
      • 독서 (1)
      • 기타 (3)
      • 백준 (192)
      • swea (31)
      • 프로그래머스 (30)
      • 이코테 (4)
      • 99클럽 코테 스터디 (30)
      • ssafy (31)
      • IT기사 (1)
  • 블로그 메뉴

    • 홈
    • 태그
  • 인기 글

  • 태그

    99클럽
    코딩테스트준비
    Til
    개발자취업
    항해99
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
버그잡는고양이발
백준 14503. 로봇 청소기
상단으로

티스토리툴바