Notice
Recent Posts
Recent Comments
Link
250x250
«   2025/08   »
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
관리 메뉴

피너클의 it공부방

백준 9935 문자열 폭발 (c++) : 피너클 본문

백준

백준 9935 문자열 폭발 (c++) : 피너클

피너클 2022. 8. 1. 00:04
728x90
반응형

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

 

9935번: 문자열 폭발

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

www.acmicpc.net

문자열 문제다.

문자열에 폭발 문자열이 있으면 터트려 없에야한다. 이번에는 stack이 아닌 vector를 쓸것이다.

vector<char> v;
string a, b;

a가 문자열, b가 폭발 문자열이다.

v에는 a의 문자를 하나씩 넣을것이다.

cin >> a >> b;
for (int i = 0; i < a.length(); i++) {
	v.push_back(a[i]);

값들을 입력받은뒤 a의 길이만큼 반복문을 돌린다. 먼저 v에 a[i]를 넣어준다.

	if (v.size() >= b.length() && v[v.size() - 1] == b[b.length() - 1]) {

만약 v의 사이즈가 b의 길이보다 크고 v의 마지막 문자가 b의 마지막 문자와 같다면

		bool chk = true;
		for (int j = 0; j < b.length(); j++) {
			if (v[v.size() - b.length() + j] != b[j]) {
				chk = false;
				break;
			}
		}

간단하게 b의 길이만큼 v를 돌아보며 확인한다. 만약 v와 b가 같이 않은 값이 있으면 chk를 false로 바꾸고 나온다.

		if (chk) {
			for (int i = 0; i < b.length(); i++) v.pop_back();
		}
	}
}

만약 chk가 true라면 b의 길이만큼 v의 값을 뺀다.

if (v.size() == 0) {
	cout << "FRULA" << endl;
}
else {
	for (int i = 0; i < v.size(); i++) cout << v[i];
}

모든 반복문이 끝나고 v의 사이즈가 0이라면 FRULA를 출력하고 아니면 v를 출력한다.

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

using namespace std;

vector<char> v;
string a, b;

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

	cin >> a >> b;
	for (int i = 0; i < a.length(); i++) {
		v.push_back(a[i]);
		if (v.size() >= b.length() && v[v.size() - 1] == b[b.length() - 1]) {
			bool chk = true;
			for (int j = 0; j < b.length(); j++) {
				if (v[v.size() - b.length() + j] != b[j]) {
					chk = false;
					break;
				}
			}
			if (chk) {
				for (int i = 0; i < b.length(); i++) v.pop_back();
			}
		}
	}
	if (v.size() == 0) {
		cout << "FRULA" << endl;
	}
	else {
		for (int i = 0; i < v.size(); i++) cout << v[i];
	}
}

전체코드다.

728x90
반응형
Comments