728x90
풀이
문자열의 길이가 폭발 문자열의 길이보다 크거나 같을 때, 폭발 문자열을 포함하고 있으면, 폭발 문자열의 길이만큼 index를 감소시키는 방식으로 출력할 문자열을 만들어주었다.
최종적인 index만큼 출력을 해줘도 되고, 마지막에 '\0'을 삽입해 문자열의 끝을 알려줘도 된다.
소스코드
#include <stdio.h>
#include <string.h>
char str[1000001], ans[1000001], explosion[37];
int main(){
scanf("%s %s", str, explosion);
int len = strlen(str), exp_len = strlen(explosion), idx = 0;
for (int i = 0; i < len; i++){
ans[idx++] = str[i];
if (idx >= exp_len){
int temp = idx - exp_len, j;
for (j = temp; j < idx; j++)
if (ans[j] != explosion[j-temp]) break;
idx -= (j == idx ? exp_len : 0);
}
}
ans[idx] = '\0';
puts(idx ? ans : "FRULA");
}
출처
728x90
'PS > Baekjoon Online Judge' 카테고리의 다른 글
[백준 9527] 1의 개수 세기 [C] (0) | 2021.08.25 |
---|---|
[백준 9252] LCS 2 [C] (0) | 2021.08.24 |
[백준 9251] LCS [C] (0) | 2021.08.24 |
[백준 15624] 피보나치 수 7 [C] (0) | 2021.08.24 |
[백준 13075] Fibonacci Sequence [C] (0) | 2021.08.23 |