알고리즘/백준(BOJ)
백준 2941 크로아티아 알파벳
오뚜깅
2021. 1. 29. 14:59
반응형
이 문제는 영어로 변형된 크로아티아 알파벳을 해석하여 실제 몇 글자의 크로아티아 알파벳으로 구성되어있는지 알아내는 문제이다.
예시로 크로아티아 알파벳이 영어로 변환되었을 때 여러 글자로 구성되는 케이스를 대표로 8개만 보여줬기 때문에 해당 8개에 대해서만 주어진 문자열에서 있는지 검색하고 없다면 나머지는 한 글자로 변형되었다고 해석하면 된다.
croatia[8] 배열을 생성하고 여러 글자의 크로아티아 알파벳을 넣어준뒤 주어진 문자열에서 배열 안의 글자와 일치하는 문자열이 존재한다면 한 글자인 "!"로 대체해주어 숫자를 계산할 수 있다.
여기서 주의할 점은 검사 후 한 번 대체한 문자열이 뒤에 또 나타날 수 있기 때문에 한 번 대체한 뒤에는 다시 처음부터 검사를 해줘야 한다.
#include <iostream>
using namespace std;
string croatia[8] = {"c=", "c-", "dz=", "d-", "lj", "nj", "s=", "z="};
int main(){
string s;
cin >> s;
for(int i = 0; i < 8; i++){
if(s.find(croatia[i]) != string::npos){
s.replace(s.find(croatia[i]), croatia[i].size(), "!");
i = -1;
}
}
cout << s.size();
return 0;
}
반응형