알고리즘/SWEA

[파이썬] [SWEA] 5432. 쇠막대기 자르기

SBOX Learning by doing 2021. 2. 20. 01:06
반응형

https://swexpertacademy.com/main/code/problem/problemDetail.do?contestProbId=AWVl47b6DGMDFAXm

 

SW Expert Academy

SW 프로그래밍 역량 강화에 도움이 되는 다양한 학습 컨텐츠를 확인하세요!

swexpertacademy.com

 

 

1. Stack 소스코드
# stack으로 풀기
T = int(input())

for tc in range(1, T+1):
    iron_bar = input()

    #실제로 철봉이 담길 리스트
    s = []
    ans = 0

    for i in range(len(iron_bar)):
        # 열릴 괄호라면 s 리스트에 넣어놓기
        if iron_bar[i] == '(':
            s.append('(')
        else:
            # 무조건 꺼내기
            s.pop()

            if iron_bar[i-1] == '(':
                ans += len(s)
            else:
                ans += 1
    print("#{} {}".format(tc, ans))

 


 

2. for 소스코드
T = int(input())
for tc in range(1, T+1):
    iron_bar = input()

    cnt = 0 # 막대 수
    ans = 0 # 정답

    for i in range(len(iron_bar)):
        # 열린 괄호라면 막대 추가
        if iron_bar[i] == '(':
            cnt += 1
        else:
            # 닫힌 괄호라면 막대감소
            # 레이저라면 당연히 잘못 세었으니까 빼는게 맞다.
            # 아니라면 어차피 철봉 끝이니 빼는게 맞다.
            cnt -= 1

            # 레이저
            if iron_bar[i-1] == '(':
               # 레이저로 인해서 잘린 막대들이 생겼으므로
               ans += cnt
            else:
                # 막대 끝이라는 뜻
                ans += 1

    print("#{} {}".format(tc, ans))
반응형