algorithm 백준 2941 크로아티아 알파벳 (c)

1 minute read

크로아티아 알파벳 변경
č c=
ć c-
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; 조건으로 글자를 다 훑고 나면 루프 탈출
  • n, l, c, s, d 를 만났을 때 그 다음 문자도 살펴보고, 특수 크로아티아 알파벳인 경우 continue –> 글자수를 세지 않고 다음 문자로 넘어감
  • 그래서 일반 문자일 때 & = - 를 만났을 때 글자수를 세줌 (cnt++)

Categories:

Updated:

Comments