본문 바로가기
⌨️ Algorithm/C

1/29 [C] 백준 1316번 - 그룹 단어 체커

by Lucy Oh 2022. 1. 29.

<문제>

https://www.acmicpc.net/problem/1316

 

1316번: 그룹 단어 체커

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

www.acmicpc.net

 

<내가 제출한 코드>

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
int main() {
	int test,cnt,i;

	scanf("%d", &test);

	cnt = test;

	while (test--) {
		int alpha[27] = { 0 };
		char word[101] = { 0 };
		scanf("%s", &word);
		for (i = 0; word[i] != '\0'; i++) {
			if (alpha[word[i] - 'a']) {
				if (word[i]!= word[i-1]) {
					cnt--;
					break;
				}
				else continue;
			}
			alpha[word[i] - 'a'] = 1;
		}
	}

	printf("%d", cnt);
}

입력한 단어를 word라는 char배열에 저장하고 문자 하나하나가 나올때마다 alpha라는 배열에 나왔는지를 체크해준다. 

ex) b가 입력됨 --> 2번째 원소를 1로 바꿈

 

만약 다음 원소가 b인데 이미 alpha의 2번째 원소는 이미 1이라면 이전에 b가 나왔다는 얘기이고 여기에서 word배열에서 이전 원소가 b가 아니였다면 이 단어는 그룹 단어가 아닌 것이다. 

 

마지막에 출력할 cnt(카운트)는 원래 단어개수로 초기화 시켜준다음에 이 단어가 그룹단어가 아니라고 판명이 났을때 하나씩 줄이고 break를 통해 반복문을 빠져나갈 수 있도록 해주었다.

댓글