[백준] 10799: 쇠막대기 (python 파이썬)

2024. 4. 28. 14:36· Algorithm/Data Structure

해당 문제는 다음과 같은 알고리즘으로 풀이했다.

  • 레이저는 ()로 표시되어 있다. 따라서 ()부분을 모두 문자 L로 바꾼다. (.replace() 메서드 사용)
  • 주어진 문자열(formula)를 탐색한다. 이때 '('부분은 막대가 시작하는 부분으로 막대가 시작하는 부분이 나오면 num_stick에 1을 더해준다. (num_stick은 현재 구간에 있는 막대 개수다.)
  • 문자열 탐색 도중 ')'를 만난다면 가장 짧은 막대기 하나가 끝나는 부분이다. 따라서 num_stick에 -1을 해주고, 지금까지 세어준 막대기(result)에 +1을 한다.
  • 만약 'L'을 만나면 result에 num_stick을 더해주면 된다. (현재 구간에 쌓여있는 막대 개수만큼 레이저로 잘리기 때문이다.)

코드는 다음과 같다.

formula = input().rstrip()

formula = formula.replace('()', 'L');

result = 0
num_stick = 0

for char in formula:
    if char == 'L':
        result += num_stick
    elif char == '(':
        num_stick += 1
    else:
        num_stick -= 1
        result += 1

print(result)

만약 .replace를 사용하고 싶지 않다면, ()가 레이저임을 판단하기 위해 ')'를 만났을 때 이전 문자가 '('임을 판단할 수 있어야한다. 만약 이렇게 코드를 작성하고 싶다면 다음과 같이 작성할 수 있다.

formula = input().rstrip()

last = ''
result = 0
num_stick = 0

for char in formula:
    if char == '(':
        num_stick += 1
    else:
        num_stick -= 1
        if last == '(':
            result += num_stick
        else:
            result += 1
    last = char

print(result)

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

저작자표시 (새창열림)

'Algorithm > Data Structure' 카테고리의 다른 글

[백준] 17299: 오등큰수 (python 파이썬)  (0) 2024.04.28
[백준] 17298: 오큰수 (python 파이썬)  (0) 2024.04.28
[백준] 17413: 단어 뒤집기 2 (python 파이썬)  (0) 2024.04.08
[백준] 10866: 덱 (python 파이썬)  (2) 2024.04.07
[백준] 10845: 큐 (python 파이썬)  (0) 2024.04.06
'Algorithm/Data Structure' 카테고리의 다른 글
  • [백준] 17299: 오등큰수 (python 파이썬)
  • [백준] 17298: 오큰수 (python 파이썬)
  • [백준] 17413: 단어 뒤집기 2 (python 파이썬)
  • [백준] 10866: 덱 (python 파이썬)
코딩마루
코딩마루
코딩마루
Nam's Study Note
코딩마루
전체
오늘
어제
  • 분류 전체보기 (169)
    • BackEnd (88)
      • JSP & Servlet (12)
      • Java (12)
      • JDBC (5)
      • Spring (55)
      • Spring Security (3)
      • AWS (6)
      • Docker (0)
    • FrontEnd (4)
      • HTML (4)
    • Algorithm (23)
      • Brute Force (2)
      • Greedy (2)
      • Graph (2)
      • Dynamic Programming (4)
      • Divide and Conquer (1)
      • Data Structure (11)
    • AI (4)
      • NLP (4)
    • DB (29)
      • Oracle (13)
      • MySQL (15)
    • Data (8)
      • Crawling (8)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

최근 댓글

최근 글

hELLO · Designed By 정상우.v4.3.0
코딩마루
[백준] 10799: 쇠막대기 (python 파이썬)
상단으로

티스토리툴바

개인정보

  • 티스토리 홈
  • 포럼
  • 로그인

단축키

내 블로그

내 블로그 - 관리자 홈 전환
Q
Q
새 글 쓰기
W
W

블로그 게시글

글 수정 (권한 있는 경우)
E
E
댓글 영역으로 이동
C
C

모든 영역

이 페이지의 URL 복사
S
S
맨 위로 이동
T
T
티스토리 홈 이동
H
H
단축키 안내
Shift + /
⇧ + /

* 단축키는 한글/영문 대소문자로 이용 가능하며, 티스토리 기본 도메인에서만 동작합니다.