코딩/백준

[백준][C] 2941. 크로아티아 알파벳

rivermoon 2022. 10. 3. 21:43

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

주어진 문자열이 몇 개의 크로아티아 알파벳으로 이루어져 있는지 체크하는 문제입니다.

 

 

예제 입력

ljes=njak

예제 출력

6

 

해결 방법

크게 두 가지 방법으로 생각했었습니다.

 - 앞글자가 c, d, l, n, s, z인 경우에 if문으로 그 다음 알파벳이 =, -,  j등인지 판별하여 크로아티아 문자열 찾기

 - 뒷글자가 =, -, j 인 경우에.. (생략)

 

두 번째 방법이 더 코드를 간결하게 작성할 수 있어 두 번째 방법을 사용하였습니다.

우선 단어의 수를 저장할 변수 word를 글자 수와 동일하게 지정한 다음, 두 글자가 크로아티아 단어가 되는 경우에는 그 개수에서 1을 빼고,

세 글자가 크로아티아 단어가 되는 경우(dz=)에는 단어 개수에서 2를 차감하는 방식으로 크로아티아 알파벳 수를 알 수 있습니다.

 

코드

#include <stdio.h>
#include <string.h>
int main()
{
	char str[101];
	scanf("%s", str);
	int a = strlen(str); // 단어 수를 글자 수와 같게 지정 
	
	for (int i = 0; i < strlen(str); i++){
		if (str[i] == '='){
			if (str[i-1] == 'c') a--;
			if (str[i-1] == 's') a--;
			if (str[i-1] == 'z'){
				a--;
				if (str[i-2] == 'd') a--; // dz= 알파벳인 경우에는 단어 개수 2개 차감 
			}
		}
		if (str[i] == '-'){
			if (str[i-1] == 'c') a--;
			if (str[i-1] == 'd') a--;	
		}
		if (str[i] == 'j'){
			if (str[i-1] == 'l') a--;
			if (str[i-1] == 'n') a--;
		}
	}
	printf("%d", a);
}

 

'코딩 > 백준' 카테고리의 다른 글

[백준][C] 2869. 달팽이는 올라가고 싶다.  (0) 2022.10.03
[백준][C] 1712. 손익분기점  (0) 2022.10.03
[백준][C] 5622. 다이얼  (2) 2022.10.03
[백준][C] 2908. 상수  (0) 2022.10.03
[백준][C] 1152. 단어의 개수  (1) 2022.10.03