본문 바로가기

Algorithm

5432. 쇠막대기 자르기

반응형

https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AWVl47b6DGMDFAXm&categoryId=AWVl47b6DGMDFAXm&categoryType=CODE

 

SW Expert Academy

SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!

swexpertacademy.com

 

백준에서 풀었던 문제와 동일한 문제였는데 기억이 잘 안났다...

괄호가 닫힐 때 레이저면 자른 막대만큼 새로운 막대가 생기니까 스택 사이즈 만큼 더해주면 되고,

레이저가 아니면 잘린 후에 막대의 끝이니까 1개가 증가되면 된다..

 

레이저 인지 아닌지 구별은 str의 이전 값이 여는 괄호였는지 아닌지로 결정.

 

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

string str;

int main(int argc, char** argv)
{
	int test_case;
	int T;
	
	cin >> T;
	
	for (test_case = 1; test_case <= T; ++test_case)
	{

		cin >> str;

		stack<char> sta;
		int result = 0;

		for (int i = 0; i < str.size(); i++)
		{
			if (str[i] == '(')
			{
				sta.push('(');
			}
			else
			{
				if (str[i - 1] == '(')
				{
					sta.pop();
					result += sta.size();
				}
				else
				{
					sta.pop();
					result++;
				}
			}
		}

		cout << "#" << test_case << " " << result << endl;



	}
	return 0;//정상종료시 반드시 0을 리턴해야합니다.
}
반응형

'Algorithm' 카테고리의 다른 글

4050. 재관이의 대량 할인  (0) 2020.04.28
6109. 추억의 2048게임  (0) 2020.04.27
2019 KAKAO BLIND RECRUITMENT실패율  (0) 2020.04.24
6731. 홍익이의 오델로 게임  (0) 2020.04.24
백준 2110번 공유기 설치  (0) 2020.04.23