CodingTest/백준
[c++] 백준 - 1316: 그룹 단어 체커
Daybreak21
2023. 5. 16. 19:23
1316번: 그룹 단어 체커
그룹 단어란 단어에 존재하는 모든 문자에 대해서, 각 문자가 연속해서 나타나는 경우만을 말한다. 예를 들면, ccazzzzbb는 c, a, z, b가 모두 연속해서 나타나고, kin도 k, i, n이 연속해서 나타나기 때
www.acmicpc.net
※ 정답코드
#include <iostream>
#include <cstring>
using namespace std;
int main() {
int N; char word[100];
cin >> N;
int result = N;
for (; N > 0; N--) {
bool alpha[26] = {false};
cin >> word;
for (int i = 0; i < strlen(word); i++) {
if (alpha[word[i] - 97] == 1) {
result--;
break;
}
if (word[i] != word[i + 1]) { //맨 마지막 : '\0'과 비교
alpha[word[i] - 97] = 1;
}
//else (alpha[i] == alpha[i+1]) : continue
}
}
cout << result;
return 0;
}
1. 우선 N만큼 반복되는 반복문 안에서 이 알파벳이 앞의 알파벳과 연속되지 않고 떨어져있는 알파벳인지를 저장하는 배열을 alpha[26] = {false}; 라고 초기화 하였다.
2. 단어를 처음부터 차례대로 검사하면서 이 알파벳으로 연속으로 앞에 나온 경우가 있으면 단어갯수로 초기화된 result에서 1을 빼준다. (지금 단어는 그룹단어가 아니기때문에)
3. 반복