[프로그래머스] 짝지어 제거하기

2026. 4. 1. 09:31·Algorithm

문제

 

틀렸던 풀이(시간 초과)

#짝지어진 문자열을 제거하는 함수 정의
def rm_pair(s):
	#중복 방지를 위해 set() 사용
    c_set = set()
    #짝지어 제거하기이므로 문자 * 2 해서 set에 넣음
    for c in s :
        c_set.add(c * 2)
    
    for pair in c_set :
        s = s.replace(pair, '')
        
    return s

def solution(s):
    
    while True:
        s_after = rm_pair(s)
        #짝지어진 문자열 제거 전후가 같으면 : 더이상 제거할 문자 X
        if s == s_after :
        	#문자열이 모두 제거되었을때
            if len(s_after) == 0 :
                return 1
            else :
                return 0
        else :
            s = s_after

 

로직 자체는 맞는데, 시간 초과로 나온다.. 문자열의 길이가 1000000 이하의 자연수라는데, 여기서 문자열이 길면 시간 초과가 뜨는 것 같은데, 어떤 방법을 써야 시간복잡도를 줄일 수 있을까 ?

 

- > s.replace()에서 시간이 매우 많이 들었다고 한다. replace 메소드는 모든 문자열을 돌면서 해당 문자열을 제거하는데, while True문이 계속 반복되게 되면 긴 문자열이 올 경우 이를 계속 반복해야 하기에 , 시간초과가 난 것 같다.

 

정답 풀이(Stack 활용)

def solution(s):
    #stack 활용
    stack = []
    for c in s :
        #stack이 비어있거나, 전 문자와 같을때(짝지어져 있을 때)
        if stack and stack[-1] == c :
            stack.pop()
        else : 
            stack.append(c)
    
    if len(stack) == 0 :
        return 1
    else :
        return 0

 

 

풀이 로직 :

s 문자열을 받아와 문자 하나씩 받아옴

-> stack이 비어있거나 맨 위의 문자가 들어온 문자와 같을시에(짝지어져 있을때) 제거

-> 반복을 마치고 stack의 길이가 0일시에, 모두 제거된 것이므로 1 반환

 

 

Github Link  ←

 

BackJoon-Programmers/프로그래머스/2/12973. 짝지어 제거하기 at main · jaeheonki/BackJoon-Programmers

Contribute to jaeheonki/BackJoon-Programmers development by creating an account on GitHub.

github.com

 

'Algorithm' 카테고리의 다른 글

[프로그래머스] 기능개발  (2) 2026.04.09
[프로그래머스] 귤 고르기  (1) 2026.04.01
[프로그래머스] 최댓값과 최솟값  (2) 2026.03.30
[프로그래머스] 붕대 감기  (0) 2026.03.23
[프로그래머스] 달리기 경주  (0) 2026.03.23
'Algorithm' 카테고리의 다른 글
  • [프로그래머스] 기능개발
  • [프로그래머스] 귤 고르기
  • [프로그래머스] 최댓값과 최솟값
  • [프로그래머스] 붕대 감기
uj07096
uj07096
개발블로그 시작 !
  • uj07096
    김재헌 님의 블로그
    uj07096
  • 전체
    오늘
    어제
    • 분류 전체보기 N
      • Algorithm
      • My IT
        • Article
        • Codes
      • TIL
      • My Projects N
  • 블로그 메뉴

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

  • 공지사항

  • 인기 글

  • 태그

    머신러닝
    autoencoder
    코딩테스트
    transfer learning
    EDA
    GAN
    convolution
    python
    Stack
    데이터전처리
    YOLO
    AI
    코테
    DeepLearning
    이상치
    Faster R-CNN
    프로그래머스
    kaggle
    Tensor
    ResNet
    til
    EfficientNet
    LSTM
    파이썬
    DenseNet
    딥러닝
    Algorithm
    LeetCode
    PyTorch
    optuna
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.6
uj07096
[프로그래머스] 짝지어 제거하기
상단으로

티스토리툴바