본문 바로가기
Programming/C

[C] 문자열 패턴 찾기

by graygreat 2017. 4. 10.
728x90
반응형


1) 문자열의 개수를 입력받는다. ex) n


2) 문자열의 길이를 입력받는다. ex) length


3) 문자열을 반복하여 입력받는다. ex) length길이 n 개 만큼, 모든 문자열의 길이는 같게


4) 문자열의 패턴을 찾아 출력한다. 공통인 부분은 그대로 출력, 아닌 부분은 물음표로 출력.


※ gcc로 했음


#include <stdio.h>

int main(){
    int n, length;      // 문자열의 개수와 길이
    char **str;         // 입력 받을 문자열
    int i, j;    
    char *result;       // 패턴 결과 값

    printf("문자열의 개수 : ");
    scanf("%d", &n);
          
    printf("문자열의 길이 : ");
    scanf("%d", &length);
        
    // 개수, 길이 제한
    if(n > 5000 || length > 5000){  
        printf("잘못 입력하셨습니다.");
        return 0;
    }   

    // str 동적 할당
    str = (char **)malloc(sizeof(char*) * n);   
    for(i = 0; i < n; i++)
        str[i] = (char *)malloc(sizeof(char) * length);
        
    // result 동적 할당
    result = (char *)malloc(sizeof(char) * length);

    // 문자열 입력 받기
    for(i = 0; i < n; i++)
        scanf("%s", str[i]);

    // 입력 받은 문자열 비교
    for(j = 0; j < length; j++){
        for(i = 1; i < n; i++){
            if(str[i][j] != str[i - 1][j]){
                result[j] = '?';
                break;
            }
            else{
                result[j] = str[i][j];
            }
        }
    }

    printf("패턴 : %s \n", result);     // 결과 출력

    // 할당한 메모리 해제
    for(i = 0; i < n; i++)
        free(str[i]);
    free(str);
    free(result);

    return 0;
}



반응형

'Programming > C' 카테고리의 다른 글

[C] 포켓몬 연습 문제 2  (0) 2017.04.19
[C] 포켓몬 연습 문제 1  (0) 2017.04.19
[C] strcmp 함수 구현하기  (0) 2017.04.10
[C] 난수 최대값 구하기  (0) 2017.04.10
[C] 짱짱 포인터 분석 2  (0) 2017.04.10

댓글