백준|10799번|쇠막대기

README·2022년 7월 31일
0

파이썬 PS풀이

목록 보기
48/136

문제설명
쇠막대기를 자르는 레이저와 쇠막대기들이 있을 때 이들의 위치에 따라서 쇠막대기가 몇개로 잘리는지 구하는 문제입니다.

작동 순서
1. 쇠막대기의 위치와 레이저의 위치를 입력받습니다.
2. ()가 붙어있으면 레이저가 있는 것이므로 지금까지 쌓여있던 레이저들을 자릅니다.
3. ()가 붙어있지 않고 (만 있으면 쇠막대기가 시작하는 지점입니다.
4. ()가 붙어있지 않고 )만 있으면 쇠막대기가 끝나는 지점입니다.
5. 쇠막대기가 시작하면 놓여있는 stick에 1을 더해주고 쇠막대기가 끝나면 stick에 1을 빼고 count에는 1을 더해줍니다. 그리고 레이저가 나올 경우 현재 놓여있는 쇠막대기를 자르는 것이기 때문에 count에 stick을 더해줍니다.

소스코드

import sys

input_data = list(map(str, sys.stdin.readline()[:-1]))
count, stick, pivot = 0, 0, 0
while pivot < len(input_data):
    if pivot < len(input_data) - 2:
        if input_data[pivot] == "(" and input_data[pivot + 1] == ")":
            count += stick
            pivot += 1
        elif input_data[pivot] == "(":
            stick += 1
        elif input_data[pivot] == ")":
            stick -= 1
            count += 1
    else:
        if input_data[pivot - 1] == "(":
            count += stick
        else:
            count += 1
    pivot += 1
print(count)
profile
INTP 개발자 지망생

0개의 댓글