[백준] 9935번 문자열 폭발 -python 파이썬 (시간초과 해결)

2025. 2. 4. 15:17·코딩테스트/백준

문제

 

 

 

이 문제에서 가장 유의해야할 점은 시간복잡도이다 왜냐하면 첫째줄에 주어지는 문자열의 길이의 범위가 굉장히 크기때문이다. (그래서 초반엔 시간복잡도 오류가 많이 발생함;;)


먼저 이 문제를 어떤 알고리즘으로 풀어야할지 생각을 해본다면 단순히 폭발문자열이 들어가있는 때는 간단하지만 "CC44"처럼 연속해서 오는경우가 까다로워 진다. (while문으로 없을 때까지 확인하면 시간초과가 발생)


그런데 이 문제 잘 생각해보면 괄호여닫기와 굉장히 유사하다는 것을 알 수 있다. 그래서 stack 을 사용하면 이 문제를 풀 수 있다.

 

 

for 문으로 첫번째 문자열을 돌면서 폭발문자열이 들어가면 pop해주는 형식으로 구현해주면 된다.

 

이때 구현하면서 한가지 실수를 했는데

 

 

 

오답코드

 

string  = input()
bomb = input()
ls = len(string)
lb = len(bomb)
arr = list(string)
stack = []

for i in range(ls):
    stack.append(arr[i])
    if bomb in ''.join(stack):
        for _ in range(lb):
            stack.pop()

if stack:
    print(''.join(stack))
else:
    print("FRULA")

 

 

이때 

 

if bomb in ''.join(stack)

 

 

이 부분이 문제가 됐다. 이렇게 구현하게 되면 join을 할 때마다 stack 전부 돌면서 찾아줘야하기때문에 시간복잡도가 높아지게 된것

 

 

 

정답코드

 

S  = input()
bomb = input()
ls = len(S)
lb = len(bomb)

stack = []

for i in range(ls):
    stack.append(S[i])
    #stack의 마지막인덱스부터 폭탄문자열의 길이만큼 확인
    if bomb == ''.join(stack[-lb:]):
        for _ in range(lb):
            stack.pop()

if stack:
    print(''.join(stack))
else:
    print("FRULA")

 

 

 

이렇게 stack 마지막 문자열부터 폭탄문자열길이만큼만 가져오도록 수정해주었다.

 

내장함수를 사용할 때의 시간복잡도를 생각하지 못해서 발생한 실수였다.... 

'코딩테스트 > 백준' 카테고리의 다른 글

[백준] 2573번 빙산 -python 파이썬  (0) 2025.02.11
[백준] 1504번 특정한 최단경로 - python파이썬 (시간초과 해결)  (0) 2025.02.05
[백준] 2580번 스도쿠 - python파이썬 (백트래킹)  (1) 2025.01.23
[백준] 2110번 공유기 설치 - python 파이썬 (이분탐색)  (4) 2025.01.22
[백준]1806번 부분합 - python 파이썬  (0) 2025.01.21
'코딩테스트/백준' 카테고리의 다른 글
  • [백준] 2573번 빙산 -python 파이썬
  • [백준] 1504번 특정한 최단경로 - python파이썬 (시간초과 해결)
  • [백준] 2580번 스도쿠 - python파이썬 (백트래킹)
  • [백준] 2110번 공유기 설치 - python 파이썬 (이분탐색)
hiwon
hiwon
천천히 굴러가는 코딩일기
  • hiwon
    하이원의 코딩 일기
    hiwon
  • 전체
    오늘
    어제
    • 분류 전체보기 (83)
      • 프론트엔드 (0)
        • react (0)
      • 백엔드 (13)
        • node.js (1)
        • spring (6)
      • 코딩테스트 (57)
        • 백준 (41)
        • 프로그래머스 (15)
      • 프로디지털아카데미 (9)
        • 클라우드 (1)
        • JavaScript (1)
      • github (1)
      • AWS (2)
      • Infra (1)
  • 블로그 메뉴

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

  • 공지사항

  • 인기 글

  • 태그

    bastion host
    프로그래머스
    알파코캠퍼스
    알파코
    UnionFind
    kdt교육
    코딩테스트
    EC2
    프로디지털아카데미
    백준
    파이썬
    백엔드
    신한투자증권
    그리디
    깃허브
    투포인터
    Java
    MSA
    python
    알고리즘
    프디아
    github
    백트래킹
    K디지털트레이닝
    다익스트라
    spring
    AWS
    BFS
    IT기획
    코테
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.0
hiwon
[백준] 9935번 문자열 폭발 -python 파이썬 (시간초과 해결)
상단으로

티스토리툴바