BOJ/C++
[BOJ] 10799. 쇠막대기 (C)
IamToday
2020. 3. 24. 13:59
*스택 자료구조 구현 연습을 위해 C로 풀이
*() 는 레이저이므로 레이저가 나올 때마다 스택에 있는 [(] 의 개수만큼 더해준다. (쇠막대기가 잘라지니까)
*[(]는 스택에 푸시 (레이저는 푸시 안함)
*[)]는 스택에서 팝하는데 이때, sum++ 을 해줘야 한다.
((()()))
이렇게 있다면 보기 편하게 레이저를 *로 치환한다.
( (* *) )
이렇게 될 것이다.
그럼 막대는
( (* *) )
--- -> - - -
------ -> -- -- --
이렇게 되는 데 레이저를 만날 때마다 스택에 있는 개수만큼 막대의 개수가 증가하게 된다.
막대의 끝을 의미하는 [)]가 나올 때는 나누어진 막대의 가장 오른쪽 개수를 세야 하기 때문에 sum++을 해준다.