[프로그래머스] LV2. 짝지어 제거하기 (파이썬, Python)

2026. 5. 27. 23:34·Algorithm Solving

 

 

문제 링크

 

 

구분

코딩테스트 연습 > 2017 팁스타운

 

 

문제 설명

짝지어 제거하기는, 알파벳 소문자로 이루어진 문자열을 가지고 시작합니다. 먼저 문자열에서 같은 알파벳이 2개 붙어 있는 짝을 찾습니다. 그다음, 그 둘을 제거한 뒤, 앞뒤로 문자열을 이어 붙입니다. 이 과정을 반복해서 문자열을 모두 제거한다면 짝지어 제거하기가 종료됩니다. 문자열 S가 주어졌을 때, 짝지어 제거하기를 성공적으로 수행할 수 있는지 반환하는 함수를 완성해 주세요. 성공적으로 수행할 수 있으면 1을, 아닐 경우 0을 리턴해주면 됩니다.

예를 들어, 문자열 S = baabaa 라면

b aa baa → bb aa → aa →

의 순서로 문자열을 모두 제거할 수 있으므로 1을 반환합니다.

제한사항
  • 문자열의 길이 : 1,000,000이하의 자연수
  • 문자열은 모두 소문자로 이루어져 있습니다.

입출력 예
s result
baabaa 1
cdcd 0
입출력 예 설명

입출력 예 #1
위의 예시와 같습니다.
입출력 예 #2
문자열이 남아있지만 짝지어 제거할 수 있는 문자열이 더 이상 존재하지 않기 때문에 0을 반환합니다.

 

 

 

문제 풀이

이런 문자열 문제는 while, stack을 떠올리는 것이 좋을 것 같다. 이전에 풀었던 큰수만들기 문제가 생각났다.

2026.05.15 - [Algorithm Solving] - [프로그래머스] LV2. 큰수 만들기 (파이썬, Python)

 

[프로그래머스] LV2. 큰수 만들기 (파이썬, Python)

문제 링크 구분코딩테스트 연습 > 탐욕법(Greedy) 문제 설명어떤 숫자에서 k개의 수를 제거했을 때 얻을 수 있는 가장 큰 숫자를 구하려 합니다.예를 들어, 숫자 1924에서 수 두 개를 제거하면 [1

nomad1jin.tistory.com

 

stack top과 현재 문자열이 같으면 stack 탑을 빼고, 같지 않은 경우에는 더하는 방식으로 while문을 진행했다.

def solution(s):

    # 탑과 지금 넣는게 같으면 빼기
    stack = []
    stack.append(s[0])
    i = 1
    
    while i < len(s):
        if stack and stack[-1] == s[i]:
            stack.pop()
            answer = 1

        else :
            stack.append(s[i])
            
        i += 1
    
    if stack:
        answer = 0
        
    return answer

 

 

 

 

 

다른 사람의 풀이도 살펴보았는데, 해당 조건문이 더 깔끔한것같다.

- 스택이 비었으면 추가하기

- 탑과 문자가 같으면 pop()

- 같지 않으면 append()

def solution(s):
    answer = []
    for i in s:
        if not(answer):
            answer.append(i)
        else:
            if(answer[-1] == i):
                answer.pop()
            else:
                answer.append(i)    
    return not(answer)

 

 

 

 

 

'Algorithm Solving' 카테고리의 다른 글

[프로그래머스] LV2. 귤 고르기 (파이썬, Python)  (0) 2026.05.28
[프로그래머스] LV2. 카펫 (파이썬, Python)  (0) 2026.05.28
[프로그래머스] LV2. 구명보트 (파이썬, Python)  (0) 2026.05.23
[프로그래머스] LV2. 올바른 괄호 (파이썬, Python)  (1) 2026.05.21
[프로그래머스] LV1. 햄버거 만들기 (파이썬, Python)  (0) 2026.05.17
'Algorithm Solving' 카테고리의 다른 글
  • [프로그래머스] LV2. 귤 고르기 (파이썬, Python)
  • [프로그래머스] LV2. 카펫 (파이썬, Python)
  • [프로그래머스] LV2. 구명보트 (파이썬, Python)
  • [프로그래머스] LV2. 올바른 괄호 (파이썬, Python)
아기꼬래
아기꼬래
  • 아기꼬래
    아꼬의 개발 일지
    아기꼬래
  • 전체
    오늘
    어제
    • 분류 전체보기 (55) N
      • 프로젝트 및 공모전 (4)
        • Oracle 프로젝트 (4)
      • Algorithm Solving (26)
      • SQL (9)
      • Data Analysis (12)
      • AI (0)
      • FastAPI (0)
      • Spring Boot (1) N
      • Oracle (1)
      • AWS (1) N
  • 블로그 메뉴

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

  • 공지사항

  • 인기 글

  • 태그

    Algorithm
    Tableau
    coding test
    python
    프로그래머스
    Oracle 프로젝트
    Algorithm Solving
    미래내일 일경험
    한국오라클
    일경험 프로젝트
    데이터시각화
    Oracle
    일경험
    시각화
    Oracle 일경험
    오라클 프로젝트
    SQL
    파이썬
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.6
아기꼬래
[프로그래머스] LV2. 짝지어 제거하기 (파이썬, Python)
상단으로

티스토리툴바