※ 글쓴이는 취미로 코딩을 익혀보는 사람이라 정확하지 않은 내용을 담고 있을 수 있다 ※
이번에 볼 문제는 백준 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 |