코딩/백준 문제 (실버)

[백준/2941/C언어] 크로아티아 알파벳 _ 풀이

룻밤 2023. 8. 23. 16:31

https://www.acmicpc.net/problem/2941

 

2941번: 크로아티아 알파벳

예전에는 운영체제에서 크로아티아 알파벳을 입력할 수가 없었다. 따라서, 다음과 같이 크로아티아 알파벳을 변경해서 입력했다. 크로아티아 알파벳 변경 č c= ć c- dž dz= đ d- lj lj nj nj š s= ž z=

www.acmicpc.net


풀이

#include <stdio.h>
int main() {
	char s[101];		// 문자열
	scanf("%s", &s);	// 입력
	int i;
	int cnt = 0;		// 단어 수
	
	i = 0;
	while (s[i] != '\0') {	// 문자열 끝까지 반복
		// i번째 문자가 'c'이고 i+1번째 문자가 '='이거나 '-'라면
		if (s[i] == 'c' && (s[i + 1] == '=' || s[i + 1] == '-')) {
			i++;	// 두문자를 한문자로 볼것이니 다음문자(=,-)를 검사할필요 없음
			cnt++;	// 단어수 +1
		}
		// i번째가 'd', i+1번째가 'z', i+2번째가 '='일때
		else if (s[i] == 'd' && s[i + 1] == 'z' && s[i + 2] == '=') {
			i += 2;		// 하나의 문자로 봐야하니 '='까지는 검사할필요가 없어짐
			cnt++;		// 단어수 +1
		}
		else if (s[i] == 'd' && s[i + 1] == '-') {
			i++;
			cnt++;
		}
		else if (s[i] == 'l' && s[i + 1] == 'j') {
			i++;
			cnt++;
		}
		else if (s[i] == 'n' && s[i + 1] == 'j') {
			i++;
			cnt++;
		}
		else if (s[i] == 's' && s[i + 1] == '=') {
			i++;
			cnt++;
		}
		else if (s[i] == 'z' && s[i + 1] == '=') {
			i++;
			cnt++;
		}
		// 위 조건에 모두 충족하지 못할때는 일반 알파벳
		else cnt++;	
		i++;
	}

	printf("%d\n", cnt);

	return 0;
}

실버 문제중에 가장 쉬웠다.