만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

로봇 청소기

면접 대비

시간 제한1초메모리 제한1024 MB

요약
명령이 주어질 때마다 로봇이 상자에 막힐 때까지 미끄러지듯 이동한다. 시작 칸을 포함해 로봇이 지나간 서로 다른 칸의 수를 구한다.
난이도

보통10점 중 5점

유형
시뮬레이션, 구현, 배열, 완전 탐색
정답자
아직 제출이 없습니다

문제

로봇 청소기가 격자 모양의 창고를 청소한다. 창고의 일부 칸에는 무거운 상자가 놓여 있다. 청소기는 일련의 명령에 따라 움직인다. 명령은 위("^"), 오른쪽(">"), 아래("v"), 왼쪽("<")이다. 로봇이 명령을 받으면 그 방향으로 상자가 가로막을 때까지 최대한 멀리 간다. 로봇 청소기가 한 번이라도 위치한 칸은 모두 청소된다. 시작 칸도 포함된다. 창고의 모양, 로봇의 시작 위치, 명령의 순서가 주어졌을 때, 명령이 모두 끝난 뒤 청소된 서로 다른 칸의 수를 구하라.

입력

  • 첫째 줄에 세 정수 RR (3≤R≤20003 \le R \le 2000), CC (3≤C≤20003 \le C \le 2000), NN (1≤N≤20001 \le N \le 2000)이 주어진다. RR과 CC는 격자 모양의 창고의 행과 열의 수이고, NN은 명령 문자열의 길이이다.
  • 둘째 줄에 "^", ">", "v", "<"로 이루어진 길이 NN의 문자열이 주어진다. 이는 로봇에 전달되는 명령의 순서이다.
  • 다음 RR개의 줄은 격자 모양의 창고의 모양을 나타낸다. 이 중 ii번째 줄은 ii번째 행의 모양을 나타내는 CC개의 문자로 이루어져 있다. 각 문자는 칸이 비어 있으면 점 ".", 칸에 상자가 있으면 사각형 "#", 칸이 로봇의 시작 위치이면 "O"이다. "O"를 포함하는 칸은 정확히 하나임이 보장된다. 또한 격자의 가장자리에 있는 모든 칸은 "#"임이 보장된다.

출력

로봇이 청소한 서로 다른 칸의 수를 정수로 출력한다.

예제4

  1. 예제 1

    입력
    5 5 4
    v>^v
    #####
    #O#.#
    #...#
    ##..#
    #####
    
    예상 출력
    6
    
  2. 예제 2

    입력
    6 7 7
    >>^<v><
    #######
    #.#.#.#
    #.....#
    #.....#
    ##O..##
    #######
    
    예상 출력
    12
    
  3. 예제 3

    입력
    3 12 3
    <<<
    ############
    #.#.....O.##
    ############
    
    예상 출력
    6
    
  4. 예제 4

    입력
    8 10 14
    <v>^<v>v<^^><>
    ##########
    #.#......#
    #....#...#
    ##......O#
    #........#
    #..#.....#
    #....#...#
    ##########
    
    예상 출력
    33