티스토리 뷰
문제.
예전에는 운영체제에서 크로아티아 알파벳을 입력할 수가 없었다. 따라서, 다음과 같이 크로아티아 알파벳을 변경해서 입력했다.
크로아티아 알파벳 | č | ć | dž | đ | 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
'Computer Science > 백준 알고리즘' 카테고리의 다른 글
[백준.01712-C언어] 손익분기점 (0) | 2021.03.14 |
---|---|
[백준.01316-C언어] 그룹 단어 체커 (0) | 2021.03.14 |
[백준.05622-C언어] 다이얼 (0) | 2021.03.11 |
[백준.02908-C언어] 상수 (0) | 2021.03.10 |
[백준.01157-C언어] 단어의 개수 (1) | 2021.03.09 |
댓글