반응형

문제 출처

https://www.acmicpc.net/problem/1316


i번째 문자와 i-1번째 문자가 같으면 연속된 문자이므로 같은 그룹이다. 

앞에서 동일한 문자가 나오고 i번째와 i-1번째 문자가 다른경우 그룹에 속해있지 않은 경우이므로 check배열을 사용하면 쉽게 풀수 있다.


소스코드

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
#include <iostream>
#include <string>
 
using namespace std;
 
int main(void) {
    ios_base::sync_with_stdio(false);
    cin.tie(0);
    int n;
    string str;
    int ret = 0;
    cin >> n;
    while (n--) {
        bool c[26= { 0 };
        bool flag = 0;
        cin >> str;
        c[str[0- 97= 1;
        for (int i = 1; i < str.size(); i++) {
            int cur = str[i] - 97;        // 현재 글자
            int pre = str[i - 1- 97;    // 이전 글자
            if (c[cur] && cur != pre)    flag = 1;    // 앞에 동일한 문자가 나오고 현재글자와 이전글자가 다른경우 flag를 true
            c[cur] = 1;                    // 동일한 문자가 나왔으므로 check를 한다.
        }
        if (!flag)                        // 해당 문자열이 그룹문자일 경우
            ret++;
    }
 
    cout << ret;
    return 0;
}
 
cs


반응형

'Algorithm' 카테고리의 다른 글

[BOJ 1543] 문서 검색  (0) 2019.01.08
[BOJ 2941] 크로아티아 알파벳  (0) 2019.01.07
[BOJ 2908] 상수  (0) 2019.01.07
[BOJ 10809] 알파벳 찾기  (0) 2019.01.07
[BOJ_11724] 연결 요소의 개수  (0) 2019.01.07

+ Recent posts