https://www.acmicpc.net/problem/2941
주어진 문자열이 몇 개의 크로아티아 알파벳으로 이루어져 있는지 체크하는 문제입니다.
예제 입력
ljes=njak
예제 출력
6
해결 방법
크게 두 가지 방법으로 생각했었습니다.
- 앞글자가 c, d, l, n, s, z인 경우에 if문으로 그 다음 알파벳이 =, -, j등인지 판별하여 크로아티아 문자열 찾기
- 뒷글자가 =, -, j 인 경우에.. (생략)
두 번째 방법이 더 코드를 간결하게 작성할 수 있어 두 번째 방법을 사용하였습니다.
우선 단어의 수를 저장할 변수 word를 글자 수와 동일하게 지정한 다음, 두 글자가 크로아티아 단어가 되는 경우에는 그 개수에서 1을 빼고,
세 글자가 크로아티아 단어가 되는 경우(dz=)에는 단어 개수에서 2를 차감하는 방식으로 크로아티아 알파벳 수를 알 수 있습니다.
코드
#include <stdio.h>
#include <string.h>
int main()
{
char str[101];
scanf("%s", str);
int a = strlen(str); // 단어 수를 글자 수와 같게 지정
for (int i = 0; i < strlen(str); i++){
if (str[i] == '='){
if (str[i-1] == 'c') a--;
if (str[i-1] == 's') a--;
if (str[i-1] == 'z'){
a--;
if (str[i-2] == 'd') a--; // dz= 알파벳인 경우에는 단어 개수 2개 차감
}
}
if (str[i] == '-'){
if (str[i-1] == 'c') a--;
if (str[i-1] == 'd') a--;
}
if (str[i] == 'j'){
if (str[i-1] == 'l') a--;
if (str[i-1] == 'n') a--;
}
}
printf("%d", a);
}
'코딩 > 백준' 카테고리의 다른 글
[백준][C] 2869. 달팽이는 올라가고 싶다. (0) | 2022.10.03 |
---|---|
[백준][C] 1712. 손익분기점 (0) | 2022.10.03 |
[백준][C] 5622. 다이얼 (2) | 2022.10.03 |
[백준][C] 2908. 상수 (0) | 2022.10.03 |
[백준][C] 1152. 단어의 개수 (1) | 2022.10.03 |