무한문자열
간만에 문제 풀었더니 c언어도 잘 모르겠어서 상당히 곤란하다 ㅎㅎ;;
뭘로 입력받을지도 기억안남ㅋㅋㅋㅋㅋㅎ0ㅎ,,
최소공배수만큼 문자열이 같으면 무한반복해도 같다.
최소공배수를 구하려면 최대공약수가 필요하기 때문에 같이구해줬다.
본인은 계속 오버플로우가 나서 초기화때문인가 싶어서 {0,} 다 넣어줬는데 아니었음....
sroof, troof의 크기가 너무 작아서 오버플로우가 생겼다
#include <stdio.h>
#include <string.h>
int GCD(int a, int b){ //최대공약수
return (a%b==0?b:GCD(b,a%b));
}
int LCM(int a, int b){ //최소공배수
return (a*b)/GCD(a,b);
}
int main(int argc, const char * argv[]) {
char s[50]={0,},t[50]={0,};
int slen,tlen,n;
scanf("%s %s",s,t);
slen=strlen(s); //문자열 길이 구하기
tlen=strlen(t);
n=LCM(slen,tlen); //최소공배수
char sroof[5000]={0,},troof[5000]={0,}; //이어붙일 문자열의 저장소 생성
for(int i=0; i<n; i+=slen){strcat(sroof,s);}//최대공약수/문자열길이 만큼 붙이기
for(int i=0; i<n; i+=tlen){strcat(troof,t);}
if(strcmp(sroof,troof)==0) printf("1\n");
else printf("0\n");
return 0;
}
'PROGRAMMING CODE > C' 카테고리의 다른 글
[C] 소켓통신 (0) | 2023.09.11 |
---|---|
[BACKJOON] No.2164 C언어 (0) | 2021.12.11 |
[BAEKJOON] No.1032 C언어 (0) | 2021.10.19 |
[BAEKJOON] No.1026 C언어 (0) | 2021.10.19 |
[BAEKJOON] No.1094 C언어 (0) | 2021.10.19 |