C언어/백준

2941번 , 1316번

twoweeks-within 2024. 11. 13. 18:06

2941번

1.한 문자씩 비교해서 맞는지 확인

2. count ++

3. if) 두글자, 세글자 이면 그게 한글자로 되므로

       배열 i 를 ++, i= i+2 // i+=2 해주기

 

1316

1. 알파벳 배열과 이전 배열을 0으로 초기화

2. 입력 문자가 이전 문자와 같지 않고 +

3. 이미 나온 문자면 함수 종료 (return 0;) 

4. 아니라면 알파벳 배열에 1로 초기화하고

5. 이전문자가 아니면 현재 문자 저장

 

// char prev_char = '\0'; // == 0 배열 초기화방법

// for 문안에 scanf 랑 그룹배열인지 확인하는 함수를 같이 둔다면 한 단어씩 끊을 수 있음

// scanf : 입력할때마다 이전 단어가 아닌 새로운 단어로 덮어쓰여짐

// alphabet[word[i] - 'a']  알파벳을 몇번째 인지 확인

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

int is_group_word(char word[]) {
    int alphabet[26] = {0};  
    char prev_char = '\0';  

    for (int i = 0; word[i] != '\0'; i++) {
        if (prev_char != word[i]) {  
            if (alphabet[word[i] - 'a'] == 1) {
                return 0;  
            }
            alphabet[word[i] - 'a'] = 1;  
        }
        prev_char = word[i];  
    }
    return 1;  
}

int main() {
    int N, group_count = 0;
    scanf("%d", &N);  

    for (int i = 0; i < N; i++) {
        char word[101];  /
        scanf("%s", word);  // 여기 scanf

        if (is_group_word(word)) {  // 여기 그룹검사확인
            group_count++;  
        } 							// 한 for 문 안에 가둠
    }

    printf("%d\n", group_count);  // 그룹 단어의 개수 출력
    return 0;
}

'C언어 > 백준' 카테고리의 다른 글

2738번, 2566번, 2563번, 2745번  (0) 2024.11.14
25206번  (1) 2024.11.13
10988번, 1157번  (0) 2024.11.13
11718번  (0) 2024.11.10
5622  (0) 2024.11.09