AOJ0088 The Code A Doctor Loved

問題リンク The Code A Doctor Loved

  • 解法

Mapで対応表を作って頑張りました。
かったるかったですが、表さえできてしまえばあとはやるだけです。

  • ソース
import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;

//The Code A Doctor Loved
public class AOJ0088 {

	public static void main(String[] args) {
		Map<Character, String> t = new HashMap<Character, String>();
		t.put(' ', "101");
		t.put('\'', "000000");
		t.put(',', "000011");
		t.put('-', "10010001");
		t.put('.', "010001");
		t.put('?', "000001");
		t.put('A', "100101");
		t.put('B', "10011010");
		t.put('C', "0101");
		t.put('D', "0001");
		t.put('E', "110");
		t.put('F', "01001");
		t.put('G', "10011011");
		t.put('H', "010000");
		t.put('I', "0111");
		t.put('J', "10011000");
		t.put('K', "0110");
		t.put('L', "00100");
		t.put('M', "10011001");
		t.put('N', "10011110");
		t.put('O', "00101");
		t.put('P', "111");
		t.put('Q', "10011111");
		t.put('R', "1000");
		t.put('S', "00110");
		t.put('T', "00111");
		t.put('U', "10011100");
		t.put('V', "10011101");
		t.put('W', "000010");
		t.put('X', "10010010");
		t.put('Y', "10010011");
		t.put('Z', "10010000");
		Map<String, Character> r = new HashMap<String, Character>();
		r.put("00000", 'A');
		r.put("00001", 'B');
		r.put("00010", 'C');
		r.put("00011", 'D');
		r.put("00100", 'E');
		r.put("00101", 'F');
		r.put("00110", 'G');
		r.put("00111", 'H');
		r.put("01000", 'I');
		r.put("01001", 'J');
		r.put("01010", 'K');
		r.put("01011", 'L');
		r.put("01100", 'M');
		r.put("01101", 'N');
		r.put("01110", 'O');
		r.put("01111", 'P');
		r.put("10000", 'Q');
		r.put("10001", 'R');
		r.put("10010", 'S');
		r.put("10011", 'T');
		r.put("10100", 'U');
		r.put("10101", 'V');
		r.put("10110", 'W');
		r.put("10111", 'X');
		r.put("11000", 'Y');
		r.put("11001", 'Z');
		r.put("11010", ' ');
		r.put("11011", '.');
		r.put("11100", ',');
		r.put("11101", '-');
		r.put("11110", '\'');
		r.put("11111", '?');
		Scanner sc = new Scanner(System.in);
		while(sc.hasNext()){
			char[] s = sc.nextLine().toCharArray();
			StringBuilder sb = new StringBuilder();
			for(char c:s)sb.append(t.get(c));
			while(sb.length()%5!=0)sb.append('0');
			String u = sb.toString();
			StringBuilder v = new StringBuilder();
			for(int i=0;i<u.length();i+=5)v.append(r.get(u.substring(i, i+5)));
			System.out.println(v);
		}
	}
}