読者です 読者をやめる 読者になる 読者になる

kengo92iの日記

プログラミングとかやったことの記録を書いていきます。

AOJ-2582 : 踏み台昇降

プログラミングコンテスト

Step Aerobics | Aizu Online Judge

左足と右足を交互に使って、踏み台昇降を行う。
片足だけで昇降した場合は回数に含まない。
足の動作の情報が与えられるので、正しい昇降の数を数える。


左足を挙げて、左足を降ろすというような動作は回数に含まないため、正しい組み合わせは以下の4種類だけとなる。

  "ru" -> "lu"
  "lu" -> "ru"
  "rd" -> "ld"
  "ld" -> "rd"

上記のパターンになっているものを、先頭から探すだけ。

//http://judge.u-aizu.ac.jp/onlinejudge/description.jsp?id=2582

#include<iostream>
#include<map>
#include<vector>
#include<algorithm>
#include<cmath>
#include<climits>
#include<ctime>
#include<cstring>
#include<numeric>

#define ALL(v) (v).begin(),(v).end()
#define REP(i,p,n) for(int i=p;i<(int)(n);++i)
#define rep(i,n) REP(i,0,n)
#define dump(a) (cerr << #a << "=" << (a) << endl)
#define DUMP(list) cout << "{ "; for(auto nth : list){ cout << nth << " "; } cout << "}" << endl;

using namespace std;

int main()
{
	int N;
	string f1,f2;
	int ans;
	while(cin >> N && N)
	{
		ans=0;
		f1 = f2 = "";
		rep(nth, N)
		{
			cin >> f1 ;

			if((f1=="lu" && f2=="ru") || (f1=="ru" && f2=="lu")){
				ans++;
			}
			else if((f1=="ld" && f2=="rd") || (f1=="rd" && f2=="ld")){
				ans++;
			}
			f2 = f1;	
		}
		cout << ans << endl;
	}

	return 0;
}