반응형
Notice
Recent Posts
Recent Comments
Link
«   2024/07   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
Archives
Today
Total
관리 메뉴

코딩하기 좋은날

백준 9935 문자열 폭발 본문

백준(Baekjoon) 문제

백준 9935 문자열 폭발

huiung 2019. 1. 19. 12:13
반응형

문제와 채점은 위 사이트에서 확인 하실 수 있습니다.

 

이 문제는 입력받는 문자열이 100만입니다. 시간 제한이 2초 이므로 폭발 문자열을 찾아가며 없애고 다시 문자열을 돌며 폭발 문자열을 찾는 방식으로 풀게 된다면 시간초과가 나올 것입니다. 따라서 저는 벡터 컨테이너에 문자를 하나씩 넣으며 폭발 문자열의 가장 마지막 문자가 나왔을 때 앞에 있는 원소들과 폭발 문자열의 일치 여부를 비교하여 일치하면 그부분을 pop시키고 다시 남은 문자열들을 넣어가며 폭발 문자열을 모두 제거하였습니다.

 

다음은 코드입니다.

 

#include <iostream>
#include <vector>
#include <string>

using namespace std;

int main(void) {
	ios_base::sync_with_stdio(false); cin.tie(NULL);
	vector<char> s;
	string str1; //입력 문자열 
	string str2; //폭발 문자열 
	bool flag; 
	int num = 0;
	
	cin >> str1 >> str2;
	
	int len = str1.length();
	int len2 = str2.length();
	
	for(int i = 0;  i < len; i++) {
		flag = true;
		int n = i-num; //pop된 횟수만큼 vector의 인덱스 감소 
		s.push_back(str1[i]);
		
		
		for(int j = len2-1; j >= 0; j--) { // 폭발 문자열의 끝과 벡터의 끝부터 차례대로 원소 비교 
			if(s[n--] == str2[j])
				continue;
			else {
				flag = false;
				break;
			}
			}
		if(flag)  //폭발 문자열이 들어있다면 pop시킴 
			for(int k = 0; k < len2; k++) {
				s.pop_back();
				num++; //pop된 횟수 
			}
	}
	if(s.empty())
		cout<<"FRULA";	
	else
		for(auto n: s)
			cout<<n;
	return 0;
	
}
반응형

'백준(Baekjoon) 문제' 카테고리의 다른 글

백준 1026 보물  (0) 2019.01.19
백준 4949 균형잡힌 세상  (0) 2019.01.19
백준 5525 IOIOI  (0) 2019.01.17
백준 5598 카이사르 암호  (0) 2019.01.16
백준 1764 듣보잡  (0) 2019.01.16