문자를+보내자

아래와 같은 영문 소문자 키패드(대문자 입력 불가^^)가 있다. 는 공백을 의미한다.


 * =  ||= abc ||= def ||
 * = ghi ||= hkl ||= mno ||
 * = pqrs ||= tuv ||= wxyz ||
 * =  ||=  ||=   ||

"c" 를 입력하기 위해서는 "abc" 키를 세번 입력해야 한다. "ce" 를 입력하기 위해서는 "abc" 키를 세번, "def" 키를 두번 입력한다. "ca" 를 입력하기 위해서는 "abc" 키를 세번, "abc" 키를 한번 입력한다. "a a" 를 입력하기 위해서는 "abc" 키를 한번,  키를 한번, "abc" 키를 한번 입력한다.

Input
텍스트 파일을 입력으로 한다. (텍스트 파일은 q2_input.txt 로 한다.) 텍스트 파일의 첫 행은 처리할 문장의 개수(숫자)를 의미한다. 각 문장은 줄바꿈 문자로 구분한다.

Output
각 문장별 최소 키패드 입력 회수를 출력한다. (Std Out)

Sample Input
2 welcome to ulab good luck and have fun

Sample Output
Case #1: 29 Case #2: 41

Source Code code format="java5" import java.util.Scanner;

public class SMS { public static void main(String[] args) { Scanner scan = new Scanner(System.in);

int T = scan.nextInt;   // 테스트 케이스의 개수

scan.nextLine;   // 개행문자 건너뜀 for(int i = 0; i < T; i++) { String line = scan.nextLine;   // 입력 문장

process(i, line); }   }

public static void process(int n, String stmt) { int[] keys = new int[128];

keys['a'] = 1; keys['b'] = 2; keys['c'] = 3; keys['d'] = 1; keys['e'] = 2; keys['f'] = 3; keys['g'] = 1; keys['h'] = 2; keys['i'] = 3; keys['j'] = 1; keys['k'] = 2; keys['l'] = 3; keys['m'] = 1; keys['n'] = 2; keys['o'] = 3; keys['p'] = 1; keys['q'] = 2; keys['r'] = 3; keys['s'] = 4; keys['t'] = 1; keys['u'] = 2; keys['v'] = 3; keys['w'] = 1; keys['x'] = 2; keys['y'] = 3; keys['z'] = 4; keys[' '] = 1;

int sum = 0;

for(int i = 0; i < stmt.length; i++) { char ch = stmt.charAt(i);

sum += keys[ch]; }

System.out.println("Case #" + n + ": " + sum); } } code

Comment