2048
면접 대비시간 제한2초메모리 제한512 MB
2048 게임의 이동을 순서대로 시뮬레이션하며, 타일을 밀고 같은 값을 한 번씩 합치고 합쳐진 값을 점수에 더한다.
문제
2048은 슬라이딩 블록 퍼즐 게임이다. 목표는 격자 위의 숫자 타일을 밀어 같은 숫자끼리 합쳐 2048 타일을 만드는 것이다. 4×4 격자에서 진행하며, 플레이어가 화살표 키 네 개로 타일을 밀면 타일이 부드럽게 움직인다. 매 턴마다 빈 칸에 2 또는 4가 적힌 새 타일이 무작위로 나타난다. 타일은 고른 방향으로 다른 타일이나 격자 끝에 막힐 때까지 최대한 밀린다. 이동 중 같은 숫자 타일 두 개가 부딪히면 두 값의 합을 가진 타일 하나로 합쳐진다. 이렇게 합쳐진 타일은 같은 이동 중에 다시 다른 타일과 합쳐질 수 없다. 사용자의 점수는 0에서 시작하고, 두 타일이 합쳐질 때마다 새로 만들어진 타일의 값만큼 증가한다.
현재 사용자 점수, M번의 이동과 그때 무작위로 나타나는 숫자(와 격자에서의 위치), 현재 격자 값을 입력받아 이동이 끝난 뒤의 사용자 점수를 출력하는 프로그램을 작성하시오.
입력
첫째 줄에 현재 사용자 점수가 주어진다. 0 ≤ S ≤ 500
둘째 줄에 앞으로의 M번 이동이 주어진다. 0 ≤ M ≤ 10
- [이동][2|4][행][열] 예: L200, 왼쪽 화살표를 누른 뒤 0x0에 새 2가 나타남
- 이동: L은 왼쪽, U는 위, R은 오른쪽, D는 아래
셋째 줄에 현재 격자 내용이 한 줄 문자열로 주어진다.
- 왼쪽 위(0x0)에서 오른쪽 아래(3x3) 순서
- 값은 2, 4, 8, 16, 32, 64, 128, 256, 512, 0 중 하나이며 공백으로 구분된다. 0은 빈 칸을 나타낸다.
출력
주어진 이동을 마친 뒤의 사용자 점수를 출력한다.
힌트
사용자 점수는 200이다.
입력 "0 2 0 0 0 4 0 0 2 8 2 0 8 32 16 2"에 대한 2048 격자는 아래와 같다.

입력된 이동은 L213,D202,R211,D210,D200,D212,R410,R200,D401,L212이다.
합쳐진 점수를 모두 더한다: 4 + 4 + 8 + 4 + 4 + 8 + 16 + 32 + 4 + 64 = 148
시작 점수에 148을 더한다: 200 + 148 = 348









