티스토리 뷰


해설



처음부터 끝까지 검색을 시작한다. 

검색을 해 나가면서 현재 검색하고 있는 문자가 j,=,-이면 그전 문자가 어떤거였는지를 체크한다.

또한 검색을 해 나가면서 단어의 개수를 세기 위해서 count를 하나씩 늘려준다


ljes=njak

라는 문자열이 있을때


l을 검색할때 count ++ 되고
그다음 j를 검색하게 되면 마찬가지로 count가 1 증가되서 count는 2인 상태에서 
그 앞의 문자를 보니 l이다 따라서 lj는 크로아티아 문자이므로 다시 1을 빼줘서 count가 1이되게끔 만든다.

그다음 e를만나면 count=3
s를 만나서 count =4
=을 만나서 count=5인 상태에서

=을 만났으므로 앞의 문자까지 포함해서 보면 s=이다. 따라서 count를 1빼줘서 4가 되게끔하고

마찬가지로 검색을 쭉 하다보면 6이 나오게 된다.

=,-,j를 만났을때 바로 앞의 문자 뿐만이 아니라 그 앞의문자까지도 체크한다. 왜냐하면 dz=라는 크로아티아 문자가 있기 때문이다.

소스코드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
#include <iostream>
#include <algorithm>
using namespace std;
 
string n;
string strarr[8= {"c=","c-","dz=","d-","lj","nj","s=","z="};
int main()
{
    cin>>n;
    int count=0;
    for(int i=0; i<n.size(); i++)
    {
        if(n[i] == 'j' || n[i] == '=' || n[i] == '-')
        {
            count++;
            string str,str2;
            for(int j=i-1; j<=i; j++//두글자 만들기
            {
                str += n[j];
            }
            if(i-2 >=0//세글자 만들기
            {
                for(int j=i-2; j<=i; j++)
                {
                    str2 += n[j];
                }
            }
            for(int k=0; k<8; k++//두글자검사 세글자 검사
            {
                if(strarr[k] == str2)
                {
                    count-=2;break;
                }
                else if(strarr[k] == str)
                {
                    count--;break;
                }
            }
        }
        else
        {
            count++;
        }
    }
    cout<<count<<endl;
    return 0;
}
 
cs


댓글
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함