https://www.acmicpc.net/problem/1316
그룹단어가 몇개인지 찾는 문제이다. 같은 문자가 연속해서 나오다가 끊기고 다시 나오면 그룹문자가 아니기 때문에 map을 통해 갯수를 세고 이게 전에 나왔던 개수이면 false를 반환 만약 순회가 끝나면 그룹문자이기 때문에 true를 반환해주자.
정답코드
#include "iostream"
#include "string"
#include "map"
using namespace std;
bool isGroup(string s)
{
map<char, int> smap;
char prechar = s[0];
smap[prechar]++;
for (int i = 1; i <s.length(); i++) \
{
if (s[i-1] != s[i] && smap[s[i]] > 0) return false;
else smap[s[i]]++;
}
return true;
}
int main()
{
int n, cnt = 0;
string s;
cin >> n;
for (int i = 0; i < n; i++)
{
cin >> s;
if (isGroup(s)) cnt++;
}
cout << cnt;
return 0;
}
'코딩테스트 > 백준' 카테고리의 다른 글
[백준][C++]9506번. 약수들의 합 (0) | 2024.09.02 |
---|---|
[백준][C++]2869번. 달팽이는 올라가고 싶다. (0) | 2024.08.30 |
[백준][C++]2941번. 크로아티아 알파벳 (0) | 2024.08.29 |
[백준][C++]25206번. 너의 평점은 (0) | 2024.08.29 |
[백준][C++]1157번. 단어공부 (0) | 2024.08.28 |