5555
#include <stdio.h>
#include <string.h>
// 문자열 비교 함수
int str_cmp_f(char *str, char *cmp, int len){
int s_index = 0;
int c_index = 0;
for(int x = 0; x < 20; x++){
// 문자열이 같은 경우
if(str[s_index] == cmp[c_index]){
s_index++;
}
// 문자열이 다른 경우
else{
int index = 0;
int y = 0;
// 만약 2개 이상이 같을 경우
if(!(s_index == 1)){
// 2번째 부터 찾고자하는 문자열의 0번째와 같은 문자열 찾기
// ex)
// CCCBB
// CBCCCCCBBA
for(y ;y < s_index; y++){
if(str[0] == cmp[c_index-s_index+y+1]){
index = c_index-s_index+y;
break;
}
}
// 만약 0번째와 같은 문자열이 있을 경우
if(index){
x -= s_index-y;
c_index = index;
}
}
// 만약 1개만 같았을 경우
// ex)
// DEBBGAKBC
// DDEBBGAKBC
else{
c_index --;
x --;
}
s_index = 0;
}
c_index++;
// 모든 문자열이 같은 경우
if(s_index == len){
return 1;
}
// x가 9일 경우 c_index를 0번째로 초기화
// ex)
// XYZ
// ZAAAAAAAXY
else if(x == 9){
c_index = 0;
}
}
// 모든 문자열이 같은 경우
if(s_index == len){
return 1;
}
// 모든 문자열이 같은 경우가 없을 경우
else{
return 0;
}
}
int main(void){
// 찾고자하는 문자열 입력
char str[11] = {0};
scanf("%s", &str);
int len = strlen(str);
// 반지 개수
int ring_num = 0;
scanf("%d", &ring_num);
int count = 0;
for(int i = 0; i < ring_num; i++){
// 비교 할 문자열입력
getchar();
char cmp_str[11] = {0};
scanf("%s", &cmp_str);
// 찾고자하는 문자열이 포함 된지 count
count += str_cmp_f(str, cmp_str,len);
}
// 찾고자하는 문자열을 포함 반지의 개수를 출력
printf("%d", count);
return 0;
}

ㅎㅎ.. 코드 더럽다 ㅎㅎ...
그래서 gpt 에게 코드 더럽다고 하니까 깔끔한 버전을 주더라구요...
#include <stdio.h>
#include <string.h>
int contains(char *pattern, char *ring) {
char doubled[22];
strcpy(doubled, ring);
strcat(doubled, ring); // 원형 처리
return strstr(doubled, pattern) != NULL;
}
int main(void) {
char pattern[11];
scanf("%s", pattern);
int n;
scanf("%d", &n);
int count = 0;
for (int i = 0; i < n; i++) {
char ring[11];
scanf("%s", ring);
count += contains(pattern, ring);
}
printf("%d\n", count);
return 0;
}
.. 그 긴게 짧게 바뀌었어요........
strcpy()와 strcat() 함수를 사용해서
doubled = ZAAAAAAAXYZAAAAAAAXY << 이렇게 원형 처리를 하고
strstr() 함수로 doubled 안에 XYZ가 있는지 찾고 찾았다면 1 없다면 NULL이여서 0을 반환.... wow ㅎㅎ;;

그럼 코드 길이가 2444B 에서 521B로 ~~^^;;;;

'백준' 카테고리의 다른 글
| [ 백준 / C ] 2439번 : 별 찍기 - 2 (0) | 2026.01.13 |
|---|---|
| [ 백준 / C ] 2920번 : 음계 (0) | 2026.01.09 |
| [ 백준 / C ] 9417번 : 최대 GCD (0) | 2026.01.07 |
| [ 백준 / C ] 5597번 : 과제 안 내신 분..? (0) | 2026.01.06 |
| [ 백준 / C ] 10718번 : We love kriii (0) | 2026.01.05 |