코딩테스트 문제풀이/프로그래머스

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

itaeiou 2020. 2. 27. 14:41
반응형

프로그래머스

쇠막대기

 

https://programmers.co.kr/learn/courses/30/lessons/42585

 

코딩테스트 연습 - 쇠막대기 | 프로그래머스

여러 개의 쇠막대기를 레이저로 절단하려고 합니다. 효율적인 작업을 위해서 쇠막대기를 아래에서 위로 겹쳐 놓고, 레이저를 위에서 수직으로 발사하여 쇠막대기들을 자릅니다. 쇠막대기와 레이저의 배치는 다음 조건을 만족합니다. - 쇠막대기는 자신보다 긴 쇠막대기 위에만 놓일 수 있습니다. - 쇠막대기를 다른 쇠막대기 위에 놓는 경우 완전히 포함되도록 놓되, 끝점은 겹치지 않도록 놓습니다. - 각 쇠막대기를 자르는 레이저는 적어도 하나 존재합니다. - 레이저는 어

programmers.co.kr

 

#include <string>
#include <vector>

using namespace std;

int solution(string arrangement) {
    int answer = 0;
    int stick = 0, r = 0;
    int size = arrangement.size();
    
    for(int i=0; i<size; i++) {
        if(arrangement[i] == '(') {
            if(arrangement[i+1] == ')') r = 1;    // 레이저 on
            else stick++;
        }
        else {
            if(r == 1) {    // 레이저 on이면
                answer += stick;    // 쇠막대기 갯수만큼 더하고
                r = 0;              // 레이저 off
            }
            else {          // 레이저 off이면
                stick--;
                answer++;
            }
        }
    }    
    
    return answer;
}

 

스택/큐 유형이라는데 다르게 품

반응형