만드는 중입니다

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

Robot Turtles

면접 대비

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

요약
8x8 보드에서 터틀을 왼쪽 아래 칸에서 다이아몬드까지 옮기는 가장 짧은 F, R, L, X 명령 프로그램을 찾습니다.
난이도

보통10점 중 5점

유형
BFS, 시뮬레이션, 구현
정답자
아직 제출이 없습니다

문제

Robot Turtles는 Theta가 가장 좋아하는 게임 중 하나이다. 이 게임에서 유치원생들은 시작 칸에서 다이아몬드까지 거북이를 움직이는 프로그램을 짜면서 "코딩"을 배운다. Robot Turtles는 Kickstarter 인큐베이터가 지원한 게임 중 가장 성공한 게임으로 알려져 있다.

플레이어는 시작 위치에서 목표(다이아몬드)까지 거북이를 옮기는 "명령어"로 이루어진 프로그램을 작성한다. 이후 어른이 명령어에 따라 거북이를 움직여 프로그램을 "실행"한다.

Robot Turtles는 8×88 \times 8 보드에서 진행된다. 거북이는 T로 표시되며, 항상 왼쪽 아래 칸에서 오른쪽을 바라보며 출발한다. 보드에는 빈 칸(.), 돌 성(C), 얼음 성(I)이 있다. 다이아몬드는 D로 표시된다. 거북이는 빈 칸과 다이아몬드가 있는 칸으로만 이동할 수 있다.

거북이 프로그램에는 1 글자로 표시되는 명령어가 4가지 있다.

  • F 거북이가 바라보는 방향으로 한 칸 앞으로 이동한다. 거북이가 성이나 보드의 가장자리를 바라보고 있으면 프로그램 오류가 발생한다.
  • R 거북이가 오른쪽으로 90도 회전한다. 칸은 바뀌지 않는다.
  • L 거북이가 왼쪽으로 90도 회전한다. 칸은 바뀌지 않는다.
  • X 거북이가 바라보는 방향으로 레이저를 쏜다. 바라보는 칸이 얼음 성이면 얼음이 녹아 빈 칸이 된다. 그 밖의 경우에는 프로그램 오류가 발생한다. 거북이는 움직이지 않고 방향도 바뀌지 않는다. 빈 칸, 돌 성, 보드 밖을 향해 레이저를 쏘면 프로그램 오류다.

입력

입력은 보드를 나타내는 8줄로 주어지며, 각 줄은 보드의 한 행이다. 거북이는 항상 왼쪽 아래에서 출발한다. 다이아몬드는 정확히 1개 있다. 얼음 성은 최대 10개까지 있다.

출력

거북이를 시작 위치에서 다이아몬드까지 옮기는, 오류 없이 실행되는 가장 짧은 프로그램을 출력한다. 같은 최단 길이의 프로그램이 여러 개라면 그중 아무거나 출력해도 된다.

거북이가 다이아몬드에 도달할 수 없으면 no solution을 출력한다.

예제4

  1. 예제 1

    입력
    ........
    ........
    ........
    ...CC...
    ..C.DC..
    .C..C...
    C.IC....
    T.C.....
    
    예상 출력
    FLFRXFLFRFLFRF
    
  2. 예제 2

    입력
    ........
    ........
    ........
    ...CC...
    ..CIDC..
    .CI.C...
    C.IC....
    T.C.....
    
    예상 출력
    FLFRXFLXFRFLXFRF
    
  3. 예제 3

    입력
    ........
    ........
    ........
    ...CCD..
    ..C..C..
    .C..I...
    C.IC....
    T.C.....
    
    예상 출력
    FLFRXFLFRFXFFFLFFLF
    
  4. 예제 4

    입력
    ........
    ........
    ........
    CCCCC...
    ..C.DC..
    ..C.C...
    C.IC....
    T.C.....
    
    예상 출력
    no solution