algorithm 백준 2941 크로아티아 알파벳 (c)
크로아티아 알파벳 변경 č c= ć c- dž dz= đ d- lj lj nj nj š s= ž z= 예를 들어, ljes=njak은 크로아티아 알파벳 6개(lj, e, š, nj, a, k)로 이루어져 있다. 단어가 주어졌을 때, 몇 개의 크로아티아 알파벳으로 이루어져 있는지 출력한다.
dž는 무조건 하나의 알파벳으로 쓰이고, d와 ž가 분리된 것으로 보지 않는다. lj와 nj도 마찬가지이다. 위 목록에 없는 알파벳은 한 글자씩 센다.
입력으로 주어진 단어가 몇 개의 크로아티아 알파벳으로 이루어져 있는지 출력한다.
[출처] : 백준 온라인 저지
풀이
#include <stdio.h>
int main() {
char word[101];
scanf("%s", word);
int i;
int cnt = 0;
for (i = 0;; i++) {
char lett = word[i];
if (word[i] == NULL)
break;
if (lett == 'n' || lett == 'l') {
if (word[i + 1] == 'j') continue;
}
else if (lett == 'c' || lett == 's' || lett == 'z') {
if (word[i + 1] == '=' || word[i + 1] == '-') continue;
}
else if (lett == 'd') {
if (word[i + 1] == '-') continue;
if (word[i + 1] == 'z' && word[i + 2] == '=') continue;
}
cnt++;
}
printf("%d", cnt);
}
- 입력받은 문자열을 앞에서부터 훑기
- 임의로 char word[101]의 공간을 줬기 때문에,
if (word[i] == NULL ) break;
조건으로 글자를 다 훑고 나면 루프 탈출
- 임의로 char word[101]의 공간을 줬기 때문에,
- n, l, c, s, d 를 만났을 때 그 다음 문자도 살펴보고, 특수 크로아티아 알파벳인 경우 continue –> 글자수를 세지 않고 다음 문자로 넘어감
- 그래서 일반 문자일 때 & = - 를 만났을 때 글자수를 세줌 (cnt++)
Comments