coding_test/BAEKJOON

백준 2941번 C언어 풀이

CodeJin 2021. 8. 13. 18:26

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

 

2941번: 크로아티아 알파벳

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

www.acmicpc.net

크로아티아 알파벳이라는 문자를 예전에는 그대로 쓸 수 없었는데, 이 문제를 피하기 위해 변형하여 썼다고 한다. 이 변형된 알파벳을 크로아티아 알파벳으로 개수를 세는 문제.

 

3번째로 푸는 실버티어의 문제이다. 이번에도 어렵겠지 싶었는데, 코드를 더럽게 짤 각오를 하고 하니 할만 했다.(솔직히 개선해야 할 것 같긴 하다.)

 

목록에 있는 변형된 크로아티아 알파벳을 조건문에 대입하여 해당하는 크로아티아알파벳이 나오는 경우 비교할 배열의 인덱스를 조절하는 방법 풀었다.

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

int main () {
    char a[101];
    int word = 0;
    int i = 0;
    scanf("%s", a);

    while (i < strlen(a)) {
        if (a[i] == 'c' && a[i+1] == '=') {
            i += 2;
        } else if (a[i] == 'c' && a[i+1] == '-') {
            i += 2;
        } else if (a[i] == 'd' && a[i+1] == 'z' && a[i+2] == '=') {
            i += 3;
        } else if (a[i] == 'd' && a[i+1] == '-') {
            i += 2;
        } else if (a[i] == 'l' && a[i+1] == 'j') {
            i += 2;
        } else if (a[i] == 'n' && a[i+1] == 'j') {
            i += 2;
        } else if (a[i] == 's' && a[i+1] == '=') {
            i += 2;
        } else if (a[i] == 'z' && a[i+1] == '=') {
            i += 2;
        } else {
            i++;
        }
        word++;
    }
    
    printf("%d", word);
    return 0;
}