AOJ 0502 - Dice

洗練されていないコード.これではお嫁に行けない.(嫁?)
他の人のコードを見て勉強したいと思います.
この問題でのショートコーディングはできませんでした.

#include <iostream>
using namespace std;
int main(){
	int n;
	while(cin >> n,n){
		//dice = {u,l,r,d,c};
		int dice[5] = {5,4,3,2,1}, res = 1;
		while(n--){
			string siji;
			cin >> siji;
			int tmp = dice[5];
			if(siji == "North"){				
				dice[5] = dice[3];
				dice[0] = tmp;
				dice[3] = 7 - tmp;
			}
			if(siji == "South"){				
				dice[5] = dice[0];
				dice[0] = 7 - tmp;
				dice[3] = tmp;
			}
			if(siji == "East"){				
				dice[5] = dice[1];
				dice[1] = 7 - tmp;
				dice[2] = tmp;
			}
			if(siji == "West"){				
				dice[5] = dice[2];
				dice[1] = tmp;
				dice[2] = 7 - tmp;
			}
			if(siji == "Left"){
				tmp = dice[0];
				dice[0] = dice[2];
				dice[2] = dice[3];
				dice[3] = dice[1];
				dice[1] = tmp;
			}
			if(siji == "Right"){
				tmp = dice[0];
				dice[0] = dice[1];
				dice[1] = dice[3];
				dice[3] = dice[2];
				dice[2] = tmp;
			}
			res += dice[5];
		}
		cout << res << endl;
	}
}