스크래블 점수 계산
면접 대비시간 제한1초메모리 제한128 MB
각 Scrabble 플레이의 시작 칸과 방향을 읽고, 고정된 15x15 보드의 글자 및 단어 보너스 배수를 적용해 점수를 계산한다.
문제
스크래블(Scrabble)은 121개국에서 29개 언어로 1억 세트 넘게 팔린 단어 게임이다. 각 타일에는 알파벳 한 글자가 적혀 있으며, 간단한 규칙(여기서는 다루지 않는다)에 따라 이 타일들을 보드 위에 놓아 단어를 만든다.
각 글자 타일의 점수는 다음과 같다.
보드는 크기의 격자다. 일부 칸은 보너스를 주는 프리미엄 칸이다.
- 글자 보너스 칸은 그 칸에 놓인 타일 하나의 점수를 배로 만든다.
2L은 그 타일 점수를 2배,3L은 3배로 만든다. - 단어 보너스 칸은 (모든 글자 보너스를 적용한 뒤) 단어 전체의 점수를 배로 만든다.
2W는 2배,3W는 3배다. 한 단어가 여러 개의 단어 보너스 칸을 덮으면 그 배수를 모두 곱한다.
행은 위에서 아래로 1부터 15까지, 열은 왼쪽에서 오른쪽으로 A부터 O까지 번호를 매긴다. 프리미엄 칸의 배치는 다음과 같다(..은 일반 칸이며, 중앙 칸 H8은 2W 단어 보너스로 취급한다).
A B C D E F G H I J K L M N O
1 3W .. .. 2L .. .. .. 3W .. .. .. 2L .. .. 3W
2 .. 2W .. .. .. 3L .. .. .. 3L .. .. .. 2W ..
3 .. .. 2W .. .. .. 2L .. 2L .. .. .. 2W .. ..
4 2L .. .. 2W .. .. .. 2L .. .. .. 2W .. .. 2L
5 .. .. .. .. 2W .. .. .. .. .. 2W .. .. .. ..
6 .. 3L .. .. .. 3L .. .. .. 3L .. .. .. 3L ..
7 .. .. 2L .. .. .. 2L .. 2L .. .. .. 2L .. ..
8 3W .. .. 2L .. .. .. 2W .. .. .. 2L .. .. 3W
9 .. .. 2L .. .. .. 2L .. 2L .. .. .. 2L .. ..
10 .. 3L .. .. .. 3L .. .. .. 3L .. .. .. 3L ..
11 .. .. .. .. 2W .. .. .. .. .. 2W .. .. .. ..
12 2L .. .. 2W .. .. .. 2L .. .. .. 2W .. .. 2L
13 .. .. 2W .. .. .. 2L .. 2L .. .. .. 2W .. ..
14 .. 2W .. .. .. 3L .. .. .. 3L .. .. .. 2W ..
15 3W .. .. 2L .. .. .. 3W .. .. .. 2L .. .. 3W
예를 들어 BANQUET를 O열 1행에서 시작해 아래로 놓으면 84점이다. 타일 Q가 글자 2배 칸에 놓이고 단어 전체가 단어 3배 칸 하나를 덮으므로 가 된다. 같은 칸에서 시작해 BANQUETS를 놓으면 추가된 S도 단어 3배 칸에 놓이므로 점이 된다.
이 문제에서는 이미 보드에 놓인 타일, 빈 타일, 인접 타일, 랙 보너스 등은 모두 무시하고 각 단어를 그 자체로만 채점한다.
입력
입력은 여러 줄로 이루어지며, 각 줄은 하나의 놓기를 나타낸다. 각 줄은 단어 시작 위치의 표기로 시작하고, 공백 하나에 이어 단어(대문자 알파벳 2~15개로 이루어진 문자열)가 온다.
시작 위치는 행 번호와 열 문자를 공백 없이 붙여 쓴다. 행 번호가 먼저 오면(예: 15H) 단어를 가로로(오른쪽으로) 놓고, 열 문자가 먼저 오면(예: O1) 단어를 세로로(아래쪽으로) 놓는다. 행 번호는 1부터 15까지, 열 문자는 A부터 O까지이다.
모든 단어는 보드 안에 완전히 들어가는 것이 보장된다. 놓기의 목록은 # 한 글자만 있는 줄로 끝난다.
출력
각 놓기에 대해 한 줄씩 출력한다. 입력에 주어진 놓기 표기를 그대로(시작 위치, 공백, 단어) 쓴 뒤, 공백 하나에 이어 그 놓기의 점수를 출력한다.