본문 바로가기

BOJ/C++

[BOJ] 10799. 쇠막대기 (C)

*스택 자료구조 구현 연습을 위해 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