AOJ 2252 koukyoukoukokukikou
AOJ 2252 koukyoukoukokukikou
http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=2252
問題概要
キーボードで右手、左手、それぞれ担当のキーが決まっている。
ある文章を打つときに何回手を入れ替えないといけませんか、という問題。
解法
毎回どちらの手であるか記憶して、前の手と異なった数を数えて出力する。
ソース
#include<iostream> #include<string> #define REP(i,b,n) for(int i=b;i<(int)n;i++) #define rep(i,n) REP(i,0,n) using namespace std; int main(){ const string left = "qwertasdfgzxcvb"; const string right = "yuiophjklnm"; string s; while(cin >> s){ if(s == "#")break; int now = -1, cnt = 0; rep(i, s.length()){ int tmp; if(left.find(s[i]) != string::npos){ tmp = 0; } if(right.find(s[i]) != string::npos){ tmp = 1; } if(now == -1)now = tmp; else if(now != tmp){ cnt++; now = tmp; } } cout << cnt << endl; } return 0; }