CodingTest/백준

[c++] 백준 - 1316: 그룹 단어 체커

Daybreak21 2023. 5. 16. 19:23

1316번: 그룹 단어 체커 (acmicpc.net)

 

1316번: 그룹 단어 체커

그룹 단어란 단어에 존재하는 모든 문자에 대해서, 각 문자가 연속해서 나타나는 경우만을 말한다. 예를 들면, ccazzzzbb는 c, a, z, b가 모두 연속해서 나타나고, kin도 k, i, n이 연속해서 나타나기 때

www.acmicpc.net

 

 

※ 정답코드

#include <iostream>
#include <cstring>
using namespace std;

int main() {
	int N; char word[100];
	cin >> N;
	int result = N;

	for (; N > 0; N--) {
		bool alpha[26] = {false};
		cin >> word;

		for (int i = 0; i < strlen(word); i++) {
			if (alpha[word[i] - 97] == 1) {
				result--;
				break;
			}
			if (word[i] != word[i + 1]) { //맨 마지막 : '\0'과 비교
				alpha[word[i] - 97] = 1;
			}
			//else (alpha[i] == alpha[i+1]) : continue
		}

	}
	cout << result;

	return 0;
}

1. 우선 N만큼 반복되는 반복문 안에서 이 알파벳이 앞의 알파벳과 연속되지 않고 떨어져있는 알파벳인지를 저장하는 배열을  alpha[26] = {false}; 라고 초기화 하였다. 

 2. 단어를 처음부터 차례대로 검사하면서 이 알파벳으로 연속으로 앞에 나온 경우가 있으면 단어갯수로 초기화된 result에서 1을 빼준다. (지금 단어는 그룹단어가 아니기때문에)

3. 반복