[백준] 10799번(쇠막대기)

·2023년 5월 8일

백준 문제풀이

목록 보기
61/159

백준 10799번

최종 제출 코드

s = input()
bar = 0
count = 0

for i in range(len(s)):
  if s[i] == "(":
    bar += 1
  else:
    bar -= 1
    if s[i-1] == "(":
      count += bar
    else:
      count += 1

print(count)

bar는 쇠막대기 개수, count는 나눠진 조각의 개수
◼ 레이저는 자신의 위치에 존재하는 bar의 개수만큼의 조각을 발생시킴
(는 쇠막대기의 시작점 or 레이저의 시작점

  • )의 직전 원소가 (라면 이전의 이 (는 레이저의 시작점
  • )의 직전 원소가 )라면 짝꿍 (는 쇠막대기의 시작점
    ⇒ 전자라면 if문에서 bar로 판단한 것이 사실은 레이저였던 거기 때문에 bar -= 1 해줘야하고, bar의 개수만큼 생긴 조각을 count에 더해줘야 한다.
    ⇒ 후자라면 쇠막대기가 끝나는 지점이기 때문에 bar -= 1을 해주고, 1개의 쇠막대기는 그 쇠막대기 위에 존재하는 레이저의 개수+1만큼 조각나기 때문에 끝나는 지점에서 count+1 해준다.
profile
백엔드 개발자가 되고 싶어요(22.8.15~)

0개의 댓글