반응형
문제 출처
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 |