백준/심화

1316: 그룹 단어 체커 / C++

Koalitsiya 2023. 3. 9. 18:16

문제

 

풀이

bool형 배열을 통해 해당 문자가 처음 등장한 것이라면 해당 알파벳의 번호에 해당하는 인덱스를 true로 바꿔주고, 이미 등장한 적이 있었다면 해당 문자가 앞에 있는 문자와 다르다면 cnt를 증가시키고 break하고 같다면 continue한다.

이후 단어의 총 개수 num에서 그룹 문자가 아닌 문자의 개수 cnt를 뺀 값을 출력한다. 

#include <iostream>
#include <string>

using namespace std;

int main() {
	int num, cnt = 0;
	string s;

	cin >> num;

	for (int i = 0; i < num; i++) {
		bool alpha[26] = { false };
		
		cin >> s;

		for (int j = 0; j < s.length(); j++) {
			if (alpha[s[j] - 'a'] == false) {
				alpha[s[j] - 'a'] = true;
			}
			else if (alpha[s[j] - 'a'] == true) {
				if (s[j] != s[j - 1]) {
					cnt++;
					break;
				}
				else
					continue;
			}
		}
	}

	cout << num - cnt;
	
	return 0;
}