본문 바로가기

알고리즘 스터디

[백준] A와 B (C++)

728x90
반응형

백준 12904 A와 B

1. 문제

문제링크

2. 접근법

[ 문제 접근 ]

 

입력받은 s에서 t를 유추하는 것 보다 t에서 거꾸로 s를 구하는 것이 코드가 더 간결했다.

출력을 0, 1로 해야하므로 flag를 하나둬서 바로 출력했다.

마지막 단어가 B이면 reverse 함수로 뒤집고 아니라면 마지막 단어를 하나씩 제거하면서 while문을 돌렸다.

3. 코드

#include <string>
#include <iostream>
#include <algorithm>
using namespace std;
string s, t;
int main()
{
	ios_base::sync_with_stdio(false);
	cin.tie(0);
	cout.tie(0);
	bool flag = false;
	cin >> s >> t;

	while (1)
	{
		if (s.length() == t.length())
		{
			if (s == t)
				flag = true;
			break;
		}
		char c = t[t.length() - 1];
		t.pop_back();
		if (c == 'B')
			reverse(t.begin(), t.end());
	} 
	cout << flag << "\n";
	return 0;
}

4. 시간복잡도

입력받은 string 크기만큼 while문을 돌리므로 최대 1000만큼 돈다. 따라서 1초내에 구현하기 충분하다.

5. 결과

728x90
반응형