Notice
Recent Posts
Recent Comments
Archives
반응형
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
Today
Total
11-15 12:52
250x250
관리 메뉴

꿈꾸는 개발자의 블로그

[백준] Python - 10799 쇠막대기 본문

Algorithm/Baekjoon

[백준] Python - 10799 쇠막대기

aldrn29 2022. 11. 18. 15:21

풀고나니까 쉬운데.. 처음에 어떻게 풀어야 하는지 아이디어가 생기지 않아서 너무 어려웠다. 앞으로 많은 문제를 풀어서 여러 가지 접근 방법에 대한 아이디어를 얻어야겠다고 생각했다 ㅠㅠ

 


 

문제 링크

https://www.acmicpc.net/problem/10799

 

10799번: 쇠막대기

여러 개의 쇠막대기를 레이저로 절단하려고 한다. 효율적인 작업을 위해서 쇠막대기를 아래에서 위로 겹쳐 놓고, 레이저를 위에서 수직으로 발사하여 쇠막대기들을 자른다. 쇠막대기와 레이저

www.acmicpc.net

 

문제 풀이

  1. "(" 라면, 스택에 추가한다.
  2. ")" 인데 앞선 인덱스의 값이 "(" 였다면, 레이저이므로 그동안 스택에 쌓인 개수만큼 result에 더한다.
  3. 그 외의 경우는 ")" 다음에 ")"이 온 경우일 것이고, 이 때는 막대가 끝난 시점이고 result에 1을 더한다.

 

전체 코드

str = input().strip()
stick = []
result = 0

for i in range(len(str)) :
    if str[i] == '(' :
        stick.append('(')
    else :
        # 레이저 
        if str[i-1] == '(' :
            stick.pop()
            result += len(stick)
        else :
            stick.pop()
            result += 1

print(result)

 

728x90
728x90
Comments