Post

백준 1316번 풀이

백준 1316번 풀이

백준 1316번 그룹 단어 체커

로직 구상

  1. 처음 문자로 몇번 반복해서 단어를 받아야 하는지 체크
  2. 단어를 다 받아서 저장
  3. 단어 문자열의 각 문자를 참조, KV라는 배열 만들어서 이전에 사용된적이 있는지 체크
  4. 사용된적이 없다면, KV를 1로 업데이트, 사용된적 있고 그 전의 값과 동일하지 않다면 그룹 단어 X


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
#include <stdio.h>
#include <string.h>

int main() {

    int N, M=0;

    scanf("%d", &N);

    char words[N][100];
    for(int i=0; i<N; i++) {
        scanf("%s", words[i]);
    }



    for(int i=0; i<N; i++) {
        
        int KV[26] = {0};


        for(int k=0; k<strlen(words[i]); k++) {

            if(KV[(int)words[i][k] - 97] != 1) {
                KV[(int)words[i][k] - 97] = 1;
            }
            else if(words[i][k] != words[i][k-1]) {
                M += 1;
                break;
            }
        }
        
    }

    printf("%d", N - M);
    

}

고찰

문자를 한번에 받아서 저장하지 않고 각 필요한때마다 가져와서 사용해도 됨. for문 2개 합치기 가능.

This post is licensed under CC BY 4.0 by the author.

Trending Tags