※ 글쓴이는 취미로 코딩을 익혀보는 사람이라 정확하지 않은 내용을 담고 있을 수 있다 ※

 

이번에 볼 문제는 백준 3447번 문제인 버그왕이다.
문제는 아래 링크를 확인하자.

https://www.acmicpc.net/problem/3447 

 

3447번: 버그왕

입력은 여러 줄의 소스 코드로 이루어져 있다. 이 소스 코드는 백준이가 작성한 버그를 찾는 프로그램으로 이미 처리가 되어있다. 각 줄은 100글자 이내이고, 입력은 파일이 끝날 때 끝난다. 줄의

www.acmicpc.net

주어지는 각 줄에 대하여 "BUG" 부분문자열이 나타나지 않을 때까지 "BUG"를 지우는 문제이다.

 

각 줄을 앞부터 읽어나가면서 "BUG"를 만나 이를 지웠을 때, 다음으로 나올 수 있는 "BUG"의 가장 빠른 위치는 그 위치의 앞 2문자부터 시작하는 부분문자열이다. ("BUBUGG"와 같은 문자열을 참고하자.) 이에 유의하여 구현하자.

 

getline을 이용하면 주어지는 문자열을 줄단위로 입력받을 수 있다.

 

아래는 제출한 소스코드이다.

#include <iostream>
#include <string>
using namespace std;

string s;

int main() {
	ios::sync_with_stdio(0);
	cin.tie(0);

	while (getline(cin, s)) {
		int slen = s.length();
		for (int i = 0; i + 2 < slen; i++) {
			if (s.substr(i, 3) == "BUG") {
				s = s.substr(0, i) + s.substr(i + 3, slen - i - 3);
				slen -= 3;
				i = max(i - 3, -1);
			}
		}

		cout << s << '\n';
	}
}
728x90

'BOJ' 카테고리의 다른 글

[BOJ 15822 // C++] Ah-Choo!  (0) 2023.08.22
[BOJ 6765 // C++] Icon Scaling  (0) 2023.08.22
[BOJ 5370 // C++] Which Way  (1) 2023.08.21
[BOJ 2897 // C++] 몬스터 트럭  (0) 2023.08.21
[BOJ 15823 // C++] 카드 팩 구매하기  (0) 2023.08.21

+ Recent posts