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

 

이번에 볼 문제는 백준 11008번 문제인 복붙의 달인이다.
문제는 아래 링크를 확인하자.

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

 

11008번: 복붙의 달인

한신이는 대학교에서 "복붙의 달인"으로 유명하다. 한신이는 타이핑 속도가 느리기 때문에 대학에서 가능한 모든 일을 복붙으로 해결한다. 그는 n개의 문자를 입력하는데 있어서 n초의 시간

www.acmicpc.net

문자열을 앞에서부터 읽으면서 (1)가능하다면 문자열을 복붙해넣고 (2)그 외의 경우 문자 하나를 입력하는 것을 시뮬레이션하는 것으로 답을 구하자.

 

단순히 복붙가능한 문자열이 substring으로 몇 개 있는지 세어 수식을 세워서 풀기는 어렵다. "ababababa"를 입력하고자 할 때 복붙가능한 문자열이 "ababa"와 같은 경우를 단순 수식으로는 처리하기 쉽지 않기 때문이다.

 

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

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

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

	int T; cin >> T;
	while (T--) {
		int cnt = 0;
		string s1, s2; cin >> s1 >> s2;
		int s1len = s1.length(), s2len = s2.length();
		for (int i = 0; i < s1len; i++) {
			if (s1len - i >= s2len) {
				if (s1.substr(i, s2len) == s2) i += s2len - 1;
			}
			cnt++;
		}
		cout << cnt << '\n';
	}
}
728x90

+ Recent posts