언젠가는

(파이썬) 백준 10799번 쇠막대기 파이썬 python3 본문

IT/코딩

(파이썬) 백준 10799번 쇠막대기 파이썬 python3

new1life 2022. 8. 7. 21:17

백준 10799번

괄호가 ()한번에 닫히면 레이저, 나중에 닫히면 막대의 끝부분임을 알 수 있고, 레이저는 현재의 막대기 개수만큼 자른다는 사실을 통해 정답을 구할 수 있습니다.
 
1.
a = list(input())
a에 괄호들을 입력받습니다.
 
2.
b= 0
ans=0
b에는 끝나지 않은 막대기 개수를 넣어줄 것입니다.'('의 갯수 '('는 나중에 ')'를 만나게 되면 끝나고, 한번에 만나면 레이저입니다.
 
 
3.
for i in range(len(a)):
    if a[i]=='(':
        b+=1
인덱스로 '('인 친구들을 찾아서 b에 +해줍니다.
 
    else:
')'인 친구들을 만났는데,
 
        if a[i-1]=='(':
            b-=1
            ans+=b
그 전의 값이 '('이면 레이저입니다.
레이저는 막대기에서 탈락이므로 b에서 -1합니다.
레이저는 앞에 있는 막대기들 개수만큼 자르기 때문에 ans에 b의 개수(막대개수)만큼 더합니다.
 
        else:
            b-=1
            ans+=1
이것은 그 전의 값이 '('가 아닌 경우 입니다. 레이저가 아니므로 앞의 '('와 쌍을 이룬 막대의 끝입니다. 막대의 끝부분도 잘린 부분이 되므로 ans에 1을 더하고, 막대가 되기 위한 친구들을 모아놓은 b에서는 1을 빼줍니다.
            
print(ans)
Comments