소스코드
#include <iostream>
#include <cstring>
using namespace std;
string buffer[7] = {"c=", "c-", "d-", "lj", "nj","s=","z="};
string wrong[4] = {"--", "==", "-=", "=-"};
int main(){
string s;
cin >> s;
int result = s.length(); //일반적인 알파벳 개수
for(int i = 1; i < s.length(); i++){
for(int j = 0; j < 4; j++){
if(s[i] == wrong[j][0] && s[i-1] == wrong[j][1]){
result--;
}
}
}
for(int i = 1; i < s.length(); i++){
for(int j = 0; j < 7; j++){
if(s[i] == buffer[j][1] && s[i-1] == buffer[j][0]){
if(j == 6 && s[i-2] == 'd'){
result = result-2;}
else {result--;}
}
}
}
cout << result << endl;
return 0;
}
- 변수
string s : 입력받을 문자열
string buffer[7] : 크로아티아 알파벳 배열
string wrong[4] : '-' or '='가 연속으로 나오는 배열
int result : 크로아티아 알파벳 개수
- 알고리즘
- 영어 알파벳 기준으로 한 글자당 알파벳 한개임으로 result값을 문자열의 길이로 한다.
- 만약에 '-' 나 '='가 연속으로 나오는 경우는 단어로 취급하면 안 되기 때문에 result값에서 빼준다.
- for문을 돌리면서 buffer배열에 있는 값이라면 길이가 2임으로 1을 빼주고 dz=인 경우만 2를 빼준다.
- 배운점
str.find(찾는 문자) : 찾는 문자의 첫번째 인덱스값 => string
- 아쉬운점&느낀점
딱 히 없 다