끄적끄적 코딩
article thumbnail
Published 2019. 9. 27. 17:58
[C++] 백준 16360번 Go Latin 알고리즘
728x90

문자열 문제입니다.

뒤의 문자를 확인하여, 그 문자에 해당하는 끝자리로 바꿔주면 됩니다.

 

#include <iostream>
using namespace std;

int n;
string s;
char e[12] = { 'a', 'i', 'y', 'l', 'n', 'o', 'r', 't', 'u', 'v', 'w', 'e' };

void add(char c)
{
	if (c == 'e' && s[s.length() - 2] != 'n'){
		c = ' ';
	}

	switch (c) {
		case 'a':
			s += "s";
			break;
		case 'i':
			s += "os";
			break;
		case 'y':
			s[s.length() - 1] = 'i';
			s += "os";
			break;
		case 'l':
			s += "es";
			break;
		case 'n':
			s[s.length() - 1] = 'a';
			s += "nes";
			break;
		case 'o':
			s += "s";
			break;
		case 'r':
			s += "es";
			break;
		case 't':
			s += "as";
			break;
		case 'u':
			s += "s";
			break;
		case 'v':
			s += "es";
			break;
		case 'w':
			s += "as";
			break;
		case 'e':
			s[s.length() - 2] = 'a';
			s[s.length() - 1] = 'n';
			s += "es";
			break;
		default:
			s += "us";
			break;
	}
}

int main(int argc, char* argv[])
{
	cin >> n;

	for (int i = 0; i < n; ++i) {
		cin >> s;
		add(s[s.length() - 1]);
		cout << s << endl;
	}

	return 0;
}

검색 태그