케이스윔의 개발 블로그

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

Algorithm

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

kswim 2018. 12. 26. 23:40

문제

레이저, 쇠막대기를 표시하는 string이 들어올 때 레이저에 의해 잘리는 쇠막대기의 개수를 구하시오.

문제 출처: 프로그래머스(https://programmers.co.kr/learn/courses/30/lessons/42585)


풀이

문제가 레벨2인데도 처음에 보고는 좀 어렵다고 생각했습니다. 근데 매우 간단한 문제였습니다! '('와 ')'가 연속으로 들어올 때에는 레이저를 쏜 것이고 아닐 때의 '('는 쇠막대기의 시작, ')'는 쇠막대기의 끝을 의미합니다. 쇠막대기가 들어오면, 즉 '('이면 스택에 쌓아줍니다. 쇠막대기가 끝나면=')'이면 스택에서 pop해줍니다. 이러한 과정에서 '('와 ')'이 연속으로 들어오면, 레이저를 쏘게되면 그 때 쌓여있는 스택의 사이즈만큼 쇠막대기가 생겨납니다. answer += stack.size() 해주면됩니다. 그리고 쇠막대기가 끝날 때마다 해당 하는 막대기는 하나의 막대기를 추가하게됨을 알 수 있습니다. 스택으로 간단히 해결할 수 있는 문제입니다.(10분 컷!)


코드

https://github.com/kswim/Algorithm/blob/master/etc/42585.cpp

Comments