*스택 자료구조 구현 연습을 위해 C로 풀이
*() 는 레이저이므로 레이저가 나올 때마다 스택에 있는 [(] 의 개수만큼 더해준다. (쇠막대기가 잘라지니까)
*[(]는 스택에 푸시 (레이저는 푸시 안함)
*[)]는 스택에서 팝하는데 이때, sum++ 을 해줘야 한다.
((()()))
이렇게 있다면 보기 편하게 레이저를 *로 치환한다.
( (* *) )
이렇게 될 것이다.
그럼 막대는
( (* *) )
--- -> - - -
------ -> -- -- --
이렇게 되는 데 레이저를 만날 때마다 스택에 있는 개수만큼 막대의 개수가 증가하게 된다.
막대의 끝을 의미하는 [)]가 나올 때는 나누어진 막대의 가장 오른쪽 개수를 세야 하기 때문에 sum++을 해준다.
'BOJ > C++' 카테고리의 다른 글
[BOJ] 18808. 스티커 붙이기 (0) | 2020.03.25 |
---|---|
[BOJ] 18809. Gaaaaaaaaaarden (0) | 2020.03.25 |
[BOJ] 1158. 요세푸스 문제 (C) (0) | 2020.03.24 |
[BOJ] 2151. 거울설치 + TC (0) | 2020.03.18 |
[BOJ] 9376. 탈옥 (0) | 2020.03.18 |