티스토리 뷰

문제. 

예전에는 운영체제에서 크로아티아 알파벳을 입력할 수가 없었다. 따라서, 다음과 같이 크로아티아 알파벳을 변경해서 입력했다.

크로아티아 알파벳 č ć đ lj nj š ž
변경 c= c- dz= d- lj nj s= z=

예를 들어, ljes=njak은 크로아티아 알파벳 6개(lj, e, š, nj, a, k)로 이루어져 있다. 단어가 주어졌을 때, 몇 개의 크로아티아 알파벳으로 이루어져 있는지 출력한다. dž 는 무조건 하나의 알파벳으로 쓰이고, d와 ž가 분리된 것으로 보지 않는다. lj와 nj도 마찬가지이다. 위 목록에 없는 알파벳은 한 글자씩 센다.

 

입출력.

첫째 줄에 최대 100글자의 단어가 주어진다. 알파벳 소문자와 '-', '='로만 이루어져 있다. 단어는 크로아티아 알파벳으로 이루어져 있다. 문제 설명의 표에 나와있는 알파벳은 변경된 형태로 입력된다. 입력으로 주어진 단어가 몇 개의 크로아티아 알파벳으로 이루어져 있는지 출력한다.

 

방법.

입력받은 문자열을 맨 뒤의 문자부터 확인했다. 크로아티아 알파벳의 변경된 버전을 보면 마지막 문자로 나누었을 때 =, -, j, 총 3가지로 분리할 수 있다. 그리고 바로 앞의 문자를 확인해 나가면서 크로아티아 알파벳의 개수를 구할 수 있다. 

 

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

int main(void){
    char str[100];
    scanf("%s",str);
    int cnt = 0;
    for(int i=strlen(str)-1; i>-1; i--){
        if(i == 0) {
            cnt++; 
            break;
        }
        switch (str[i]){
            case '=':
                if(i>1 && str[i-1] =='z' && str[i-2] =='d' ){
                    i-=2;
                }else if(str[i-1] =='c' || str[i-1] =='s' || str[i-1] =='z'){
                    i--;
                }break;
            case '-':
                if(str[i-1] =='c' || str[i-1] =='d'){
                    i--;
                }break;
            case 'j':
                if(str[i-1] =='l' || str[i-1] =='n'){
                    i--;
                }break;
            default : break;
        } cnt++;
    }
    printf("%d", cnt);
}

 

 

 

 

2941번: 크로아티아 알파벳

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

www.acmicpc.net

댓글
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
최근에 올라온 글
글 보관함
Total
Today
Yesterday