์•Œ๊ณ ๋ฆฌ์ฆ˜

[๊ธฐ๋ณธ] ์Šคํƒ ์ž๋ฃŒ๊ตฌ์กฐ ํ™œ์šฉ

์„œ์•„๋ž‘๐Ÿ˜ 2025. 3. 10. 00:08

 

์Šคํƒ์„ ํ™œ์šฉํ•ด์•ผํ•˜๋Š” ๋ฌธ์ œ

์Šคํƒ์„ ํ™œ์šฉํ•ด์•ผ ํ•˜๋Š” ๊ฒฝ์šฐ๋Š” ๋ณดํ†ต ์ง์„ ์ง“๋Š” ๋ฌธ์ œ์ž…๋‹ˆ๋‹ค. ๋‚จ๋…€๊ฐ€ ๋ฐ˜๋ณต๋ผ์„œ ๋‚˜ํƒ€๋‚˜๊ฑฐ๋‚˜, ๋™๋ฌผ ๋“ฑ๋“ฑ ๊ต์ฐจ๋กœ ๋ฐ˜๋ณต๋˜๋Š” ์ƒํ™ฉ์—์„œ ์ง์„ ๋งž์ถฐ์•ผํ•˜๋Š” ๊ฒฝ์šฐ์— ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค. ๊ทธ ์ค‘ ๋Œ€ํ‘œ์ ์ธ ๋ฌธ์ œ๋Š” ๊ด„ํ˜ธ์ž…๋‹ˆ๋‹ค. ๊ด„ํ˜ธ๋Š” ๋ฐ˜๋“œ์‹œ ์—ฌ๋Š” ๊ด„ํ˜ธ์™€ ๋‹ซ๋Š” ๊ด„ํ˜ธ๊ฐ€ ์ง์ด ์ด๋ฃจ์–ด์ ธ์•ผ๊ฒ ์ฃ . ๊ทธ๋ ‡์ง€ ์•Š์œผ๋ฉด, ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•ฉ๋‹ˆ๋‹ค. jsonํŒŒ์ผ์„ ๋ถ„์„ํ•  ๋•Œ๋„ ๊ด„ํ˜ธ์˜ ์—ฌ๋‹ซ์Œ์„ ๋ถ„์„ํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค. ์ค‘์ฒฉ์œผ๋กœ ๊ฐ์ฒด๊ฐ€ ์žˆ์„ ์ˆ˜ ์žˆ๊ณ  ๊ทธ ๋‚ด๋ถ€์— array๊นŒ์ง€ ์žˆ๋‹ค๋ฉด, ํ•จ์ˆ˜ ์ฝœ ์Šคํƒ ์ฒ˜๋Ÿผ ๋‚ด๋ถ€๋กœ ๋“ค์–ด๊ฐ”๋‹ค๊ฐ€ ๋‚˜์˜ฌ๋•Œ ๋‹ซ๋Š” ๊ด„ํ˜ธ๋ฅผ ๊ธฐ์ค€์œผ๋กœ ๋น ์ ธ๋‚˜์˜ค๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.

 

stack์˜ ๋™์ž‘

 

 

๋ฌธ์ œ ํ’€๊ธฐ

๋ฐฑ์ค€ 9012: ๊ด„ํ˜ธ(๋งํฌ)

 

ํ’€์ด

#include <iostream>
#include <vector>
#include <algorithm>
#include <string>
#include <stack>
using namespace std;

int main() 
{
    int count;
    cin >> count;

    for (int i = 0; i < count; i++)
    {
        string str;
        cin >> str;

        stack<int> s;
        bool error = false;
        for (int j = 0; j < str.size(); j++)
        {
            if (str[j] == '(')
                s.push(str[j]);
            else
            {
                if (s.empty())
                {
                    error = true;
                    printf("NO\n");
                    break;
                }

                s.pop();
            }
        }

        if (!error)
            printf("%s\n", s.empty() ? "YES" : "NO");
    }
}

 

์—ฌ๋Š” ๊ด„ํ˜ธ๊ฐ€ ๋‚˜์˜ค๋ฉด ์Šคํƒ์— ๋„ฃ๊ณ , ๋‹ซ๋Š” ๊ด„ํ˜ธ๊ฐ€ ๋‚˜์˜ค๋ฉด ์Šคํƒ์—์„œ ๋บ๋‹ˆ๋‹ค. ๋‹ซ๋Š” ๊ด„ํ˜ธ ์ฐจ๋ก€์—์„œ ์Šคํƒ์ด ๋น„์–ด์žˆ์œผ๋ฉด ๋‹ซ๋Š” ๊ด„ํ˜ธ๊ฐ€ ๋” ๋งŽ์•„์„œ, ๋ฌธ์ œ๊ฐ€ ์žˆ๋Š” ๊ฒฝ์šฐ์ž…๋‹ˆ๋‹ค. ๋ฐ˜๋Œ€๋กœ ๋ชจ๋“  ๋ฌธ์ž์—ด์„ ์ˆœํšŒํ–ˆ๋Š”๋ฐ ์Šคํƒ์ด ๋น„์–ด์žˆ์ง€ ์•Š๋‹ค๋ฉด ์—ฌ๋Š” ๊ด„ํ˜ธ๊ฐ€ ๋” ๋งŽ์€ ๊ฒฝ์šฐ์ž…๋‹ˆ๋‹ค.

 

์Šคํƒ์„ ์“ฐ์ง€ ์•Š๋Š” ํ’€์ด

#include <iostream>
#include <stack>
int main()
{
	int T;
	std::cin >> T;
	std::string PS;

	int count;
	for (int i = 0; i < T; i++)
	{
		std::cin >> PS;
		count = 0;
		
		for (int j = 0; j < PS.size(); j++)
		{
			if (PS[j] == '(')
				count++;
			else
				count--;

			if (count < 0)
				break;
		}

		if (count == 0)
			std::cout << "YES\n";
		else
			std::cout << "NO\n";
	}
}

๋ฌผ๋ก  ์Šคํƒ์„ ์“ฐ์ง€ ์•Š๊ณ , count๋ฅผ ํ™œ์šฉํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค. ๊ด„ํ˜ธ๋ฌธ์ œ์ฒ˜๋Ÿผ ์ง๊ด€์ ์ธ ๋ฌธ์ œ๋Š” ๋‹ค๋ฅธ ๋ฐฉ๋ฒ•์œผ๋กœ ์ถฉ๋ถ„ํžˆ ํ’€์ง€๋งŒ, DFS์™€ ๊ฐ™์€ ๋ฌธ์ œ๊ฐ€ ๋‚˜์˜ค๋ฉด ์Šคํƒ์˜ ํ™œ์šฉ๋„๊ฐ€ ๋” ์˜ฌ๋ผ๊ฐ‘๋‹ˆ๋‹ค.