Coding/백준

[백준] 10799 - 쇠막대기 - (python 파이썬)

Coding Kitsune 2022. 2. 5. 11:31

문제링크 : https://www.acmicpc.net/problem/10799

 

10799번: 쇠막대기

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

www.acmicpc.net

 

풀이과정 :

남들은 다 스택을 사용한것 같은데, 본인은 좀 다르게 풀었다.

그냥 레이저의 역할은 범위 내 쇠막대기를 자르는(두배로 만들어주는) 역할이고,

범위 내 쇠막대기가 몇개인지만 추적해주면서 레이저가 나오면 범위내 쇠막대기 만큼 더해주고,

쇠막대기가 끝나면 범위 내 쇠막대기의 개수를 줄여주고, 하면 풀리는 문제였다.

스택을 쓰면 더 편한가,,? 싶어서 남들의 풀이를 봤는데, 그다지 더 간단한거 같지도 않다.

 

lst = list(input())
count = 0
range_metal = 0
i = 0
while i < len(lst):
    if lst[i] == "(":
        if lst[i+1] == ")": #레이저의 경우
            count += range_metal #범위에 있는 쇠들만큼 더한다(두배가 되기때문)
            i += 1 #레이저 인덱스를 넘어가기 위함
        else:
            count += 1 #레이저가 아닌 경우 새로운 막대가 쌓이는것
            range_metal += 1
    else:
        range_metal -= 1 #범위 내의 쇠막대가 하나 줄어드는것
    i += 1
print(count)

답(이미지)

 

후기 : 5분컷 해서 기분이 너무좋다...!