wafflestudio / seminar-2021

2021 Rookies 세미나
47 stars 110 forks source link

c언어 문자열 문제 도와주세요 #704

Open katie3333 opened 2 weeks ago

katie3333 commented 2 weeks ago

공백을 포함하는 문자열 str1과 공백을 포함하지 않는 문자열 str2를 입력 받아, str2가 str1에 몇 번 나타나는지, 그 횟수를 출력하는 프로그램을 작성하시오. 입력 받는 문자열의 크기는 최대 100 이다. (단, AAA에는 AA가 1개 있는 것으로 한다. 즉 이미 횟수 계산에 사용된 문자는 다음 계산에 포함하지 않는다.)

include

include

pragma warning(disable:4996)

int main() { char str1[101], str2[101]; int cnt = 0, len1, len2;

scanf("%[^\n]s", str1);
scanf("%s", str2);
len1 = strlen(str1);  
len2 = strlen(str2); 

for (int i = 0;i < len1;i++) {
    int flag = 1;
    for (int j = 0;j < len2;j++) {
        if (str1[i + j] != str2[j]) flag = 0;
    }
    if (flag == 1) { 
        cnt++;
        i = i + len2 - 1;
    }
}

printf("%d", cnt);
return 0;

}

str1=rrr,str2=rr일 때

i=0일 때 j=0일 때 str1[0]=str2[0], j=1일 때 str1[1]=str2[1]이므로 cnt=1 i=i+2-1=1로 이동

i=1일 때 j=0일 때 str1[1]=str2[0], j=1일 때str[2]=str2[1]이므로 cnt=2

라서 2가 출력될 줄 알았는데 왜 1이 출력되는지 모르겠어요

Hank-Choi commented 2 weeks ago

for문에 i++가 있어요 헷갈리면 그냥 while문으로 바꾸시는게 더 좋을 것 같네요 근데 어떻게 찾아오신건지요

VioletXF commented 2 weeks ago

계정 생성 일자랑 이슈 등록 일자랑 같은 걸 보면 그냥 봇 돌리는게 아닐까 싶네요