반응형
Notice
Recent Posts
Recent Comments
Link
관리 메뉴

짧은코딩

10799 쇠막대기 본문

카테고리 없음

10799 쇠막대기

5_hyun 2022. 2. 23. 17:24
반응형

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

 

10799번: 쇠막대기

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

www.acmicpc.net

 

내 풀이(맞음)

x = input()
x = x.replace('()', '1')
ary = []
sum = 0
for i in range(len(x)):
    if x[i] == '1' and len(ary) == 0:
        continue
    elif x[i] == '1':
        for j in range(len(ary)):
            ary[j] += 1
    elif x[i] == '(':
        ary.append(0)
    elif x[i] == ')':
       sum += ary[-1]+1
       ary.pop()
print(sum)

레이저를 1로 바꾼다. 그리고 sum에 자른 막대의 개수를 저장한다. 반복문에서 첫번째 조건으로 1이고 ary가 비어있으면 넘어간다. 두번째 조건은 1이면 막대기를 잘라서 1개씩 추가해준다. 세번째로는 '('이면 막대기 하나를 추가한다. 마지막으로는 ')'이면 ary의 마지막에 1을 더하고 sum에 더하고 삭제한다. 1을 더하는 이유는 막대기를 자른 횟수를 저장한거라서 잘린 막대기 개수에는 1을 더해줘야한다.

반응형
Comments