


단어를 입력으로 받았을 때, 몇개의 단어가 그룹단어인지 개수를 출력해주면 된다.
이때 그룹단어는 같은 단어가 연속해서 나타나는 경우를 의미한다.
소문자의 개수만큼 bool vector를 선언하고 단어의 알파벳을 하나씩 순회하는데 이전에 나온 알파벳과 비교하여 다를
경우 방문했는지 체크하고 방문했다면 false를 반환해주고 다 체크했을 때 이상이 없으면 true를 반환해주는 함수를 통해 그룹함수인지를 체크하자.
정답코드
#include <iostream>
#include <vector>
using namespace std;
bool isGroup(string s);
int main()
{
int n;
cin >> n;
int count = 0;
for (int i = 0;i < n;i++)
{
string s;
cin >> s;
if (isGroup(s))
{
count++;
}
}
cout << count;
}
bool isGroup(string s)
{
vector<bool> visited(26, false);
char pre_c = ' ';
for (char c : s)
{
//만약 전에 나왔던 알파벳과 다르다면
if (c != pre_c)
{
//방문하지 않았던 거라면
if (!visited[c - 'a'])
{
visited[c - 'a'] = true;
pre_c = c;
continue;
}
else //방문했었던거라면 그룹단어가 아님
{
return false;
}
}
}
return true;
}
'코딩테스트 > 백준' 카테고리의 다른 글
[백준][C++]10798번. 세로읽기 (0) | 2025.03.07 |
---|---|
[백준][C++]1157번. 단어 공부 (0) | 2025.03.07 |
[백준][C++]11718번. 그대로 출력 (0) | 2025.03.06 |
[백준][C++]5622번. 다이얼 (0) | 2025.03.06 |
[백준][C++]2675번. 문자열 반복 (0) | 2025.03.06 |