728x90
문제 링크
10799번: 쇠막대기
여러 개의 쇠막대기를 레이저로 절단하려고 한다. 효율적인 작업을 위해서 쇠막대기를 아래에서 위로 겹쳐 놓고, 레이저를 위에서 수직으로 발사하여 쇠막대기들을 자른다. 쇠막대기와 레이저
www.acmicpc.net
문제 요약
'('와 ')'로 이루어진 문자열로 레이저와 쇠막대기의 배치 정보를 준다면 쇠막대기 조각의 총 개수를 구하라.
문제 풀이
문제 속의 그림에 다른 정보들을 추가해보겠습니다.
쇠막대기에 적혀진 숫자들은 잘려진 조각을 세기 위한 숫자입니다. 그 위쪽 괄호와 근접하게 적힌 숫자들은 무엇일까요?? 괄호가 열린 만큼 쇠막대기들이 겹쳐서 쌓여있게 됩니다. 즉 몇겹이 쌓아 올려져 있는지 적어놨습니다. 레이저를 만나게 된다면 그 개수만큼 더해주세요. 괄호가 닫히게 되면 쌓여있는 쇠막대기의 숫자는 줄어들지만, 조각의 수는 하나 늘어남을 인지해주세요.
소스 코드
import sys
input = sys.stdin.readline
s = input().rstrip()
ans = 0 #조각
cnt = 0 #겹쳐진 쇠막대기
for i in range(len(s)):
if s[i] == ')':
if s[i-1] == '(':
if cnt != 0:
cnt -=1
else:
cnt = 0
ans+=cnt
else:
ans += 1
cnt-=1
else:
cnt += 1
print(ans)
728x90
'알고리즘 > ps' 카테고리의 다른 글
[파이썬] 백준 바이러스 2606번 (0) | 2021.03.17 |
---|---|
[파이썬] 백준 20115 에너지 드링크 (1) | 2021.03.06 |
[python] 백준 1339 단어수학 (0) | 2021.01.10 |
[python] 백준 1946 신입사원 (0) | 2021.01.04 |
[python] 백준 9020 골드바흐의 추측 (0) | 2020.08.02 |