PS/Baekjoon Online Judge

[백준 9935] 문자열 폭발 [C]

kimyoungrok 2021. 8. 24. 12:11
728x90

백준 - 9935


풀이

문자열의 길이가 폭발 문자열의 길이보다 크거나 같을 때, 폭발 문자열을 포함하고 있으면, 폭발 문자열의 길이만큼 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");
}

출처

 

9935번: 문자열 폭발

첫째 줄에 문자열이 주어진다. 문자열의 길이는 1보다 크거나 같고, 1,000,000보다 작거나 같다. 둘째 줄에 폭발 문자열이 주어진다. 길이는 1보다 크거나 같고, 36보다 작거나 같다. 두 문자열은 모

www.acmicpc.net

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