[백준] 10799 - 쇠막대기 (Python)

문제

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

제출 코드

import sys

input = list(sys.stdin.readline())

open = 0
result = 0

for i in range(len(input)):
    if input[i] == '(':
        open += 1
    elif input[i] == ')':
        open -= 1
        if input[i-1] == '(':
            result += open
        else:
            result += 1

print(result)

결과


정리

문제 설명

괄호를 이용해 쇠막대기의 길이?를 결정하고 ()를 이용해 쇠막대기를 자르는 문제

주석있는 코드

import sys

input = list(sys.stdin.readline())

open = 0 # 현재 열려있는(?) 괄호 개수
result = 0 # 결과값

for i in range(len(input)):
    if input[i] == '(':
        open += 1
    elif input[i] == ')':
        open -= 1
        if input[i-1] == '(':  # 즉, '('다음에 바로 ')'가 나온 경우
            result += open
        else:
            result += 1

print(result)

느낀점

사실 내가 이해한 방식으로 구현해봤는데 시간초과가 떴다ㅠㅠㅠ (진짜 오래걸렸는뎈ㅋㅋㅋㅋ) 그래서 결국 구글링,,ㅎ 나보다 문제를 더 쉽게 이해한 다른 사람들의 방식을 보고 다시 처음부터 코딩했다😥 역시 문제를 읽고 무작정 코딩하는 것보다 문제를 확실하게 이해하고 코딩하기 전에 알고리즘을 머리속으로 그려보는 연습이 더 필요하다는 것을 느꼈다..!

(참고한 링크: https://ilgls1.tistory.com/16)

좋은 웹페이지 즐겨찾기