[BOJ14499] 주사위 굴리기

Updated:

문제

  • N*M인 지도위 주사위 (r, c)
  • 주사위 전개도
    2
    1 3 4
    5
    6
  • 주사위는 윗면이 1 동쪽 3 좌표는 (x, y) 처음에는 모든 면이 0
  • 지도 각 칸에는 정수
    • 이동한 칸에 쓰여있는 수가 0 : 주사위 바닥면 수가 칸에 복사
    • 0 아닌 경우 : 칸의 수가 주사위 바닥에 복사, 칸 수는 0으로
  • 주사위 좌표, 이동 명령 주어졌을 때, 이동시 주사위 윗면 값 구하기
  • 지도 밖의 경우에는 명령 무시, 출력 x

입력

  • 첫 째줄, 지도의 세로 가로 N, M (1<= <=20) 주사위 좌표 x, y (0 ≤ x ≤ N-1, 0 ≤ y ≤ M-1), 명령 개수 K (1<= <= 1000)
  • 둘째 줄부터 N개 줄에 지도위의 값 (0<= <=10)
  • 주사위를 처음 놓을 칸은 항상 0
  • 마지막 줄에 이동하는 명령이 순서대로 (동 1, 서 2, 북 3, 남 4)

출력

  • 이동할 때마다 주사위 윗 면에 쓰인 수 출력
  • 지도 밖 이동시, 명령 및 출력 무시

설계

  • 문제 그대로 설계/구현하면 되는데, 한 가지 까다로웠던 점은 주사위 굴리기
  • 주사위 전개도를 보고, 각 면에 인덱스를 부여해서, 계속 그 인덱스를 트랙킹하려고 했는데, 너무 헷갈렸음…
  • 주사위가 굴려져도 전개도 그대로 윗 면을 인덱스 1로 두고, 그전의 값을 temp로 두어 굴려져서 변경 시키는 값만 update하면 되었음

How I solved(click to github)


ref :
BOJ14499

Leave a comment