백준 1316번

CharliePark·2020년 9월 28일
0

TIL

목록 보기
51/67

BOJ 1316 : 그룹 단어 체커

풀만한 문제였다

그룹 단어를 체크하는 함수를 만들고, 내부에서 checker를 이용해 그룹단어인지 확인해주면 된다.

이때, 알파벳이 연속해서 나오는 경우, 커서를 이동하듯이 i++를 통해 다음 문자를 연속적으로 읽으면 되고

같은 알파벳이 연속하지 않고 끊어져서 나올 떄는 checker == 1을 통해 확인해서 0을 return 하도록 했다

그룹단어라면 1을 return 한다

0과 1을 return 하면 count에 더해지고, 총 그룹단어의 개수가 나온다.


#include <stdio.h>
#include <string.h>

char group_word(char*);

int main()
{
    int N;

    while (scanf("%d", &N) != 1) continue;

    char str[101] = "";

    int count = 0;

    for (int i = 0; i < N; i++)
    {
        while (scanf("%s", &str) != 1) continue;
        count += group_word(str);
    }

    printf("%d", count);
}

char group_word(char* str)
{
    const int num_to_alpha = 'a';

    char checker['z' - 'a' + 1] = { 0, };

    char str_len = strlen(str);

    for (int i = 0; i < str_len; i++)
    {
        int index = str[i] - num_to_alpha;
        if (checker[index] != 1)
            checker[index] = 1;
        else
            return 0;

        while (str[i] == str[i + 1])
            i++;
    }
    
    return 1;
}

0개의 댓글