[파이썬/python] 백준 - 13901 로봇

2025. 7. 31. 15:04·알고리즘
반응형

문제

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


문제 설명

  1. 특정 조건에 맞게 움직이는 로봇이 존재한다.
    1. 로봇은 사용자가 지정한 방향을 일직선으로 움직인다.
    2. 이동 중 벽이나 방문한 지역, 장애물을 만날 경우, 사용자가 지정한 다음 방향으로 움직인다.
    3. 사용자가 지정한 다음 방향이 없다면 맨 처음 방향으로 돌아가 과정을 반복한다.
    4. 움직일 수 없을 경우 동작을 멈춘다.
  2. 이동이 끝났을 때 위치를 출력한다.

 


풀이

BFS를 통해 탐색하여 풀었다. 사실 단순 구현으로 풀어도 문제 없지만, 익숙한 알고리즘으로 풀이했다.

방향을 직접 해시를 통해 지정한다는 점이 문제의 특이점이라고 생각했다.

  1. 해시를 통해 각 방향의 순서를 인덱스로 저장한다.
  2. BFS를 진행하면서 도착점을 탐색한다.
    1. 이 때 방향이 최대 4방향이기 때문에 4로 나누어진 인덱스의 방향으로 탐색한다.
  3. 결과 위치를 출력한다.

코드

import sys
from collections import deque
input = sys.stdin.readline

dy = [-1,1,0,0]
dx = [0,0,-1,1]

R,C = map(int,input().split())
k = int(input())
board = [[0 for _ in range(C)] for _ in range(R)]

for i in range(k):
    r,c = map(int,input().split())
    board[r][c] = -1
sy,sx = map(int,input().split())

dir = list(map(int,input().split()))

for i in range(len(dir)):
    dir[i]-=1
queue = deque([(sy,sx,0)])
board[sy][sx] = 1

def bfs():
    while queue:
        y,x,di = queue.popleft()
        flag = 1
        for i in range(4):
            curr_d = dir[(di+i)%4]
            ny = y + dy[curr_d]
            nx = x + dx[curr_d]
            if ny < 0 or ny > R-1 or nx < 0 or nx > C-1 or board[ny][nx] in [1,-1]:
                continue
            queue.append((ny,nx,di+i))
            board[ny][nx] = 1
            flag = 0
            break
        if flag:
            print(y,x)
            return
bfs()

시간복잡도

  • 단순 BFS로 탐색하기 때문에 배열의 크기인 R*C만큼의 시간이 소요되므로, 시간복잡도는 약 $O(10^6)$이다.
반응형

'알고리즘' 카테고리의 다른 글

[파이썬/python] 백준 - 28069 김밥천국의 계단  (2) 2025.08.02
[파이썬/python] 백준 - 17124 두 개의 배열  (3) 2025.08.01
[파이썬/python] 백준 - 2904 수학은 너무 쉬워  (3) 2025.07.30
[파이썬/python] 백준 - 20007 떡 돌리기  (3) 2025.07.29
[파이썬/python] 백준 - 2662 기업투자  (1) 2025.07.28
'알고리즘' 카테고리의 다른 글
  • [파이썬/python] 백준 - 28069 김밥천국의 계단
  • [파이썬/python] 백준 - 17124 두 개의 배열
  • [파이썬/python] 백준 - 2904 수학은 너무 쉬워
  • [파이썬/python] 백준 - 20007 떡 돌리기
개골개굴
개골개굴
굶고 코딩하기
  • 개골개굴
    밥스토리
    개골개굴
  • 전체
    오늘
    어제
  • 글쓰기 관리
    • 분류 전체보기 (162) N
      • SW 마에스트로 (0)
      • 알고리즘 (125) N
      • CS (13)
      • Java (6) N
      • 자기개발 (18)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    컴퓨터 구조
    completablefuture
    파이썬
    백준
    알고리즘
    java
    작심삼일 챌린지
    python
    인프런
    SMTP
    컴퓨터구조
    Redis
    JPA
    springboot
    async
    OS
  • 최근 댓글

  • 반응형
  • hELLO· Designed By정상우.v4.10.0
개골개굴
[파이썬/python] 백준 - 13901 로봇
상단으로

티스토리툴바