공부 자료/알고리즘

(C/C++) 백준 16360번 - Go Latin

뚜루뚜루세니 2021. 7. 7. 12:40
728x90

문제출처:https://www.acmicpc.net/problem/16360

 

16360번: Go Latin

Your program is to read from standard input. The input starts with a line containing an integer, n (1 ≤ n ≤ 20), where n is the number of English words. In the following n lines, each line contains an English word. Words use only lowercase alphabet let

www.acmicpc.net

 

1. 코드

#include <iostream>
#include <algorithm>
#include <string.h>
using namespace std;

int main() {
	
	int n;
	scanf("%d", &n);

	while (n > 0) {
		char arr[31];
		scanf("%s", arr);

		switch (arr[strlen(arr)- 1]) {
		case 'a':
			printf("%ss\n", arr);
			break;
		case 'i':
			printf("%sos\n", arr);
			break;
		case 'y':
			arr[strlen(arr) - 1] = '\0'; //y는 지우고 ios로
			printf("%sios\n", arr);
			break;
		case 'l':
			printf("%ses\n", arr);
			break;
		case 'n':
			arr[strlen(arr) - 1] = '\0'; //n은 지우고 anes로
			printf("%sanes\n", arr);
			break;
		case 'e':
			if (arr[strlen(arr) - 2] == 'n') {
				arr[strlen(arr) - 1] = '\0';
				arr[strlen(arr) - 1] = '\0';
				printf("%sanes\n", arr);
			}
			else
				printf("%sus\n", arr);
			break;
		case 'o':
			printf("%ss\n", arr);
			break;
		case 'r':
			printf("%ses\n", arr);
			break;
		case 't':
			printf("%sas\n", arr);
			break;
		case 'u':
			printf("%ss\n", arr);
			break;
		case 'v':
			printf("%ses\n", arr);
			break;
		case 'w':
			printf("%sas\n", arr);
			break;
		default:
			printf("%sus\n", arr);
			break;
		}
		n--;
	}
}

2. 해결과정

switch문을 사용해서 끝 문자를 체크하고 표에 따라 바꿔주면 된다.

-n,-ne랑 -i,-y는 신경써서 바꿔주면 된다.

 

3. 느낀점

문제 자체는 간단하지만 switch-case문 말고 더 간단하게 2차원 배열로 받는 방법도 있던데 생각을 못했다.

728x90