AOJ0266 Aka-beko and 40 Thieves

問題リンク Aka-beko and 40 Thieves

  • 解法

DFAの遷移関数を書いて解きました。
A: 1
X: 2
Y: 3
Z: 4
W: 5
B: 6
砂漠: 0
という風に状態を置いています。

  • ソース
import java.util.Scanner;

//Aka-beko and 40 Thieves
public class AOJ0266 {

	int[][] dfa = {
			{0, 0},
			{2, 3},
			{0, 4},
			{2, 0},
			{5, 6},
			{6, 3},
			{3, 2}
	};
	
	void run(){
		Scanner sc = new Scanner(System.in);
		for(;;){
			char[] s = sc.next().toCharArray();
			if(s[0]=='#')break;
			int p = 1;
			for(char t:s){
				p = dfa[p][t-'0'];
			}
			System.out.println(p==6?"Yes":"No");
		}
	}
	
	public static void main(String[] args) {
		new AOJ0266().run();
	}
}