티스토리 뷰

반응형

✏️ 문제 링크

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

 

10799번: 쇠막대기

여러 개의 쇠막대기를 레이저로 절단하려고 한다. 효율적인 작업을 위해서 쇠막대기를 아래에서 위로 겹쳐 놓고, 레이저를 위에서 수직으로 발사하여 쇠막대기들을 자른다. 쇠막대기와 레이저

www.acmicpc.net

 

✏️ 문제 설명

 

✏️ 문제 풀이

  스택 구조를 이용해서 푸는 문제 ※

 '()' 은 레이저 : 레이저를 기준으로 앞에 쌓여있는 막대의 개수를 더해준다

    즉 레이저 앞에 스택에 들어있던 '('의 개수, 즉 스택의 크기를  result에 더해준다.

  ')' 은 닫히는 막대기 : 막대기가 새롭게 추가된다고 생각하기

     new_Bar를 ++시켜주고 괄호가 닫혔으므로 스택에 있던 '('의 짝을 찾았다고 생각하기

     myStack.pop()해주기

 

✏️ 문제 코드

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

int main() {

	ios::sync_with_stdio(false);
	cin.tie(NULL);
	cout.tie(NULL);

	string A;
	cin >> A;
	stack<char>myStack;

	int new_Bar = 0;
	int result = 0;

	for (int i = 0; i < A.length(); i++) {
		
		if (A[i] == '(') {
			myStack.push('c');		
		}

		if (A[i] == ')') {

			if (i >= 1 && A[i - 1] == '(') {
				myStack.pop();
				result += myStack.size();
			}

			else {
				new_Bar++;
				myStack.pop();
			}
		}
	}
	result += new_Bar;
	cout << result;
}
반응형

'Algorithm > BOJ' 카테고리의 다른 글

[C/C++] 백준 28278번  (0) 2024.03.02
[C/C++] 백준 11399번 - ATM  (0) 2024.03.02
[C/C++] 백준 1377번 - 버블 소트  (0) 2024.02.29
[C/C++] 백준 11286번 - 절댓값 힙  (0) 2024.02.28
[C/C++] 백준 17298번 - 오큰수  (2) 2024.02.28
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/07   »
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
글 보관함