백준(BaekJoon)

[BaekJoon/C] No.2941 : 크로아티아 알파벳

ekdnjs510 2024. 8. 6. 08:21
728x90

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

 

No.2941

 

문제해석

 

 입력받은 단어의 알파벳을 순회하며 수를 세준 뒤 한글자로 취급되는 알파벳을 조건문을 통해 판단하여 count에서 제외하여 알파벳 수를 출력합니다.

  • '='이 포함되어 있는 알파벳 : c=, s=, dz=
  • '-'이 포함되어 있는 알파벳 : c-, d-
  • 'j'가 포함되어 있는 알파벳 : lj, nj

 

소스코드 & 문제풀이

 

#include <stdio.h>
#include <string.h>

int main() {
    char word[100];
    int i, count = 0;

    scanf("%s", &word); // 단어를 입력받습니다

// 입력된 문자의 길이만큼 실행한만큼 알파벳을 한 글자씩 셉니다
    for (i = 0; i < strlen(word); i++) {
        count++;

		// 크로아티아 알파벳인 š(s=),ž(z=),dž(dz=)이면 하나의 알파벳으로 취급하여 변수 count에서 빼줍니다.
        if (word[i] == '=') {
            if (word[i - 1] == 'c' || word[i - 1] == 's') {
                count--;
            }
            if (word[i - 1] == 'z') {
                count--;

                if (word[i - 2] == 'd') {
                    count--;
                }
            }
        }

		// 마찬가지로 ć(c-),đ(d-)이면 하나의 알파벳으로 취급하여 변수 count에서 빼줍니다.
        if (word[i] == '-') {
            if (word[i - 1] == 'c' || word[i - 1] == 'd') {
                count--;
            }
        }

		//lj와 nj 하나의 알파벳으로 count에서 생략합니다
        if (word[i] == 'j') {
            if (word[i - 1] == 'l' || word[i - 1] == 'n') {
                count--;
            }
        }
    }

    printf("%d", count); // 크로아티아 알파벳수를 출력합니다 

    return 0;
}

 

 

제 입출력 결과

 

728x90