문제 URL:
1316번: 그룹 단어 체커
그룹 단어란 단어에 존재하는 모든 문자에 대해서, 각 문자가 연속해서 나타나는 경우만을 말한다. 예를 들면, ccazzzzbb는 c, a, z, b가 모두 연속해서 나타나고, kin도 k, i, n이 연속해서 나타나기 때
www.acmicpc.net
다음 문제는 입력받은 단어들 중 그룹 단어의 개수를 출력하는 프로그램으로
그룹 단어란, 단어에 존재하는 모든 문자에 대해서 각 문자가 연속해서 나타나는 단어이다.
이 문제에서 문자열에 같은 요소가 있는지를 파악하기 위해 find() 함수를 사용했다.
만약 문자열에 같은 요소가 존재한다면 두 가지 경우를 생각해주어야 하는데,
find() 함수의 인수로 들어간 요소와 find() 함수가 반환한 요소가 연속된 경우와 아닌 경우이다.
두 요소가 연속되지 않는 경우에는 그룹 단어가 아니기 때문에 곧바로 반복문을 빠져나와 주었고,
두 요소가 연속된 경우에는 그룹 단어의 속성에 해당하기 때문에 다른 같은 요소가 더 있는지
반복문을 계속 진행해주었다.
문자열의 끝까지 확인을 완료하여 입력받은 단어가 그룹 단어임을 알게 되면
count 변수에 1을 더해주어 그룹 단어의 개수를 증가시켜주었다.
위 과정을 n번 반복한 뒤, 결과적으로 count를 출력하면 결괏값을 얻게 된다.
#include<iostream>
#include<string>
using namespace std;
int main()
{
string s;
int n, count=0;
cin >> n;
for(int k=0; k<n; k++)
{
cin >> s;
int i=0;
while(true)
{
if(i==s.size()-1)
{
count++;
break;
}
int x = s.find(s[i], i+1);
if(x!=string::npos && x!=i+1)
break;
else
i++;
}
}
cout << count;
}