백준 3986 좋은단어

CJB_ny·2023년 1월 2일
0

백준

목록 보기
34/104
post-thumbnail

좋은 단어

문제를 보고 먼말이지? 싶으면은 90도 회전해서 보거나

단어를 하나 더 붙여보거나 뒤짚어도 항상봐야한다

"도식화"하면서

이 문제는 90도 돌려서 보면은 stack을 사용하는 문제이다.
이걸 어케 생각함??

밑에 코드는 그냥 안봐도됨 얼마나 더럽게 짜고 문제를 이해를 못한 부분을 보여주는 코드임. (내코드)

스택이라는 개념이 그냥 떠오르지가 않아서 저렇게 다 짜놓고 인덱스 범위 생각또 못해서 틀림.

#include <iostream>
#include <vector>
#include <algorithm>
#include <string>
using namespace std;
#define endl "\n"

int n, cnt = 0;
string m;
bool b = true;

int main()
{
	ios_base::sync_with_stdio(false);
	cin.tie(NULL);
	cout.tie(NULL);

	cin >> n;
	
	for (int i = 0; i < n; ++i)
	{
		cin >> m;

		if (m.size() & 1) continue;

		if (m.size() == 2)
		{
			if (m[0] == m[1])
			{
				++cnt;
				continue;
			}
		}

		if (m.size() >= 4)
		{
			if (m[0] == m[1] && m[2] == m[3])
			{
				if (m.size() == 4)
				{
					++cnt;
					continue;
				}
				else
				{
					for (int j = 4; j < m.size(); j += 2)
					{
						if (m[j] != m[j + 1])
						{
							b = false;
						}
					}
					if (b) ++cnt;
				}
			}
			if (m[0] == m[3] && m[1] == m[2])
			{
				if (m.size() == 4)
				{
					++cnt;
					continue;
				}
				else
				{
					for (int j = 4; j < m.size(); j += 2)
					{
						if (m[j] != m[j + 1])
						{
							b = false;
						}
					}
					if (b) ++cnt;
				}
			}
		}

		b = true;
	}

	cout << cnt << endl;

	return 0;
}

스택 사용하기 ❗❗❗

좋은 단어라면은 어쨋든 이런식으로 들어올 것임.

좋은 단어가 아니라면은

스택에 이런식으로 채워질꺼임.

그래서 이 문제는 스택을 사용을 하는 것임.

후기 및 분석

문제를 봣을 때 이해가 안간다 => 뒤짚어 보고 붙여보고 돌린다.
그리고 어떻게 풀지를 아이디어를 잡는다.

cpp 코드

#include <iostream>
#include <stack>
using namespace std;
#define endl "\n"

int n, cnt = 0;
string m;

int main()
{
	ios_base::sync_with_stdio(false);
	cin.tie(NULL);
	cout.tie(NULL);

	cin >> n;
	
	for (int i = 0; i < n; ++i)
	{
		cin >> m;
		
		stack<char> st;
		for (char c : m)
		{
			if (st.size() && st.top() == c) st.pop();
			else st.push(c);
		}
		if (st.size() == 0) ++cnt;
	}

	cout << cnt << endl;

	return 0;
}

팁 ❗

문제에서 "짝짓기", "폭발" 이라는 단어가 들어가면

"stack"을 사용해야되지 않을까? 라고 생각을 하도록 하자.

profile
https://cjbworld.tistory.com/ <- 이사중

0개의 댓글