[백준 10799][파이썬] 쇠막대기

2023. 2. 5. 12:00·백준 알고리즘/스택
728x90

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

 

10799번: 쇠막대기

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

www.acmicpc.net

https://growth-coder.tistory.com/82

 

이전에 풀었던 괄호 문제와 유사한 스택을 활용한 문제이다.

 

이 문제는 레이저를 만났을 때의 쇠막대기의 개수가 중요하다.

 

그냥 쇠막대기의 개수가 아니라 레이저를 만났을 때 관통중인 쇠막대기의 개수이다.

 

다시 말해 아직 ')' 를 만나지 못한 '(' 문자의 개수가 중요하다.

 

그렇다면 아직 ')' 를 만나지 못한 '(' 문자의 개수를 어떻게 구할 수 있을까?

 

백준 9012번 문제를 풀어보았다면 쉽게 구할 수 있다.

 

'('를 만나면 개수를 1 증가시키고 ')'를 만나면 개수를 1 감소시키면 된다.

 

문제를 푸는 알고리즘은 다음과 같다.

 

1. 아직 ')' 를 만나지 못한 '(' 문자의 개수와 현재 조각의 개수를 구분한다.

 

2. '('를 만나면 '(' 문자의 개수와 현재 조각의 개수 모두를 1씩 증가시킨다.

 

3. ')'를 만났을 때 이전 문자가 '(' 였을 경우

 

레이저를 의미하므로 현재 조각의 개수에 아직 ')' 를 만나지 못한 '(' 문자의 개수를 더한다. 

 

3. ')'를 만났을 때 이전 문자가 '(' 이 아니었을 경우

 

'(' 문자가 ')'을 만난 것을 의미하므로  아직 ')' 를 만나지 못한 '(' 문자의 개수를 1 감소시킨다.

 

<전체 코드>

import sys 
ps=sys.stdin.readline().strip('\n')
stack=0
cnt=0
for i in range(len(ps)):
    if ps[i]=='(':
        stack+=1
        cnt+=1
    elif ps[i-1]=='(':
        stack-=1
        cnt-=1
        cnt+=stack
    else:
        stack-=1

print(cnt)
728x90

'백준 알고리즘 > 스택' 카테고리의 다른 글

[백준 5430][파이썬] AC  (0) 2023.02.25
[백준 1874][파이썬] 스택 수열  (0) 2023.02.23
[백준 9012][파이썬] 괄호 문제  (0) 2023.02.03
'백준 알고리즘/스택' 카테고리의 다른 글
  • [백준 5430][파이썬] AC
  • [백준 1874][파이썬] 스택 수열
  • [백준 9012][파이썬] 괄호 문제
웅대
웅대
알고리즘과 백엔드를 중심으로 열심히 공부 중입니다! 같이 소통하며 공부해요!
    250x250
  • 웅대
    웅대 개발 블로그
    웅대
  • 전체
    오늘
    어제
    • 분류 전체보기
      • 백준 알고리즘
        • dp
        • 문자열
        • 정렬
        • 스택
        • 브루트 포스
        • 이진 탐색
        • 정리
        • 우선순위 큐
        • 자료구조
        • 그래프
        • 기타
        • 그리디
      • 컴퓨터 언어
        • Kotlin
        • Python
        • C#
      • 공부
        • Database
        • Android Studio
        • Algorithm
        • 컴퓨터 구조론
        • Spring
        • lombok
        • AWS
        • Network
        • OS
        • Git & GitHub
        • AI
        • Computer Vision
        • 보안
        • Nginx
        • 프론트
        • express
        • GCP
        • grokking concurrency
        • DevOps
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    bfs
    influxDB CLI
    RNN
    Merge
    codetree
    Vector Store
    openvidu 배포
    parametric search
    binary search
    다익스트라
    nn.RNN
    AWS Lambda
    code tree
    스프링 OAuth2
    embedding
    ChatPromptTemplate
    ci/cd
    파이썬
    푸쉬 알람
    스택
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
웅대
[백준 10799][파이썬] 쇠막대기
상단으로

티스토리툴바