백준 2941_크로아티아 알파벳.cpp

hello_hidi·2021년 6월 30일
0

baekjoon_C++

목록 보기
11/33
post-thumbnail

소스코드

#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;
    
}
  1. 변수
    string s : 입력받을 문자열
    string buffer[7] : 크로아티아 알파벳 배열
    string wrong[4] : '-' or '='가 연속으로 나오는 배열
    int result : 크로아티아 알파벳 개수
  1. 알고리즘
    1. 영어 알파벳 기준으로 한 글자당 알파벳 한개임으로 result값을 문자열의 길이로 한다.
    2. 만약에 '-' 나 '='가 연속으로 나오는 경우는 단어로 취급하면 안 되기 때문에 result값에서 빼준다.
    3. for문을 돌리면서 buffer배열에 있는 값이라면 길이가 2임으로 1을 빼주고 dz=인 경우만 2를 빼준다.
  1. 배운점
    str.find(찾는 문자) : 찾는 문자의 첫번째 인덱스값 => string
  1. 아쉬운점&느낀점
    딱 히 없 다
profile
안뇽희디

0개의 댓글