본문 바로가기
알고리즘/BOJ(백준)

[ 프로그래머스 / Stack ] 쇠막대기

by 뎁꼼 2020. 6. 24.

1. 문제


 

 

코딩테스트 연습 - 쇠막대기

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

programmers.co.kr

 

 

 

2. 소스코드


- Stack으로 분류된 문제이긴 한데... 사실 Stack을 안쓰고도 가능하고, 안쓰는게 더 빠를 것 같다. (배열 사용 시)

 

- 2020/03/04 - [알고리즘/PS] - [ 백준-10799번 / 스택 ] 쇠막대기 

기존에 풀었던 문제. 백준에도 있다. 위 코드는 백준 강의 해설에 나오는 정석코드.

 

소스코드

- 소스코드를 보면 알겠지만, 사실 stack을 배열로 바꿔도 상관없다.

#include <string>
#include <stack>

using namespace std;

int solution(string ch) {
    int answer = 0;
    stack<char> st;
    for (int i = 0; i < ch.size(); ++i) {
        if (ch[i] == '(')
            st.push(ch[i]);

        else {
            st.pop();
            if (ch[i-1] == '(') {
                answer += st.size();
            }
            else                
                answer += 1;                
        }
    }
    return answer;
}