문제
풀이
이 문제는 각 단어가 떨어져서 중복되지 않는 (즉 그룹을 지을 수 있는) 단어가 몇 개인지를 출력하는 문제입니다. 여기서 고려해야 할 사항은 두 가지가 존재합니다.
1. 한 단어 내에 중복되는 문자가 존재하는가? -> 존재하지 않을 경우 그룹 단어
2. 중복되는 문자가 있는 경우 해당 문자가 연속해서 나타나는가? -> 연속되지 않을경우 그룹단어가 아님.
이렇게 두가지 사항을 고려하면 됩니다. 따라서 이중 for문을 이용하여 입력받은 값의 각 배열 값을 비교하여, 배열의 n번째 값과 m번째 값이 같을 때 n이 m-1 또는 m+1이 아닐 경우 0을 반환, for문이 완료될때까지 이상이 없을 경우 1을 반환하여 cnt 값에 더해주어 cnt를 출력해주면 됩니다. 소스코드는 아래와 같습니다.
소스코드
#include<iostream>
#include<cstring>
using namespace std;
int groupWord(char a[]){
for (int i = 0; i < strlen(a); i++)
{
for (int j = 0; j < strlen(a); j++)
{
if (a[i]==a[j]){
if(j-i>1){
if(a[j-1]!=a[j]) return 0;
}
}
}
}
return 1;
}
int main(){
int n, cnt=0;
char alpha[101];
cin >>n;
for (int i = 0; i < n; i++)
{
cin >>alpha;
cnt+=groupWord(alpha);
}
cout << cnt;
return 0;
}
'Algorithm > Python, C++' 카테고리의 다른 글
백준 10989_수 정렬하기3 [C++] (0) | 2022.07.14 |
---|---|
백준 2750_수 정렬하기 [C++] (0) | 2022.07.13 |
백준 2941_크로아티아 알파벳 [C++] (0) | 2022.07.11 |
백준 5622_다이얼 [C++] (0) | 2022.07.10 |
백준 2908_상수 [C++] (0) | 2022.07.09 |
댓글