본문 바로가기
알고리즘/구름

[ 구름 / 문자열 ] 거울 단어 풀이

by 뎁꼼 2020. 6. 29.

1. 문제


https://level.goorm.io/exam/49066/%EA%B1%B0%EC%9A%B8-%EB%8B%A8%EC%96%B4/quiz/1

 

2. 소스코드


#include <iostream>
using namespace std;
int n;
char LUT[] = {'b','d','i','l','m','n','o','p','q','s','z','u','v','w','x'};
bool isMirror(string str){
	int len = str.length();
	for(int i = 0; i < len; ++i){
		// 거울 알파벳이 아닌 경우
		bool isIn = false;
		for(int j = 0 ; j < 15; ++j )
			if(str[i] == LUT[j]) {isIn = true; break;}
		if(!isIn) return false;
		
		// 거울 알파벳이지만, 대칭이 아닌 경우
		if(str[i] == 'b'){
	 		//cout << str[i] << '\n';
		 	//cout << str[len -1- i] << '\n';
			if(str[len -1- i] != 'd') return false;
		}
		else if(str[i] == 'd'){
	 		//cout << str[i] << '\n';
		 	//cout << str[len -1- i] << '\n';
			if(str[len -1- i] != 'b') return false;
		}
		else if(str[i] == 'p'){
			// cout << str[i] << '\n';
			 //cout << str[len -1- i] << '\n';
			if(str[len -1- i] != 'q') return false;
		}
		else if(str[i] == 'q'){
			// cout << str[i] << '\n';
			 //cout << str[len -1- i] << '\n';
			if(str[len -1- i] != 'p') return false;
		}
		else if(str[i] == 's'){
			// cout << str[i] << '\n';
			// cout << str[len -1- i] << '\n';
			if(str[len -1- i] != 'z') return false;
		}
		else if(str[i] == 'z'){
			// cout << str[i] << '\n';
			// cout << str[len -1- i] << '\n';
			if(str[len -1- i] != 's') return false;
		}
  
	}
	return true;
}

int main() {
	cin >> n;
 
	while(n--){
		string str;
		cin >> str;
		if(isMirror(str)) cout << "Mirror" <<'\n';
		else cout << "Normal" << '\n';
	}
	return 0;
}