짝지어 제거하기 문제 링크
https://programmers.co.kr/learn/courses/30/lessons/12973?language=python3
Summary
스택의 기본 개념 이해 문제
짝지어 제거하기는, 알파벳 소문자로 이루어진 문자열을 가지고 시작합니다. 먼저 문자열에서 같은 알파벳이 2개 붙어 있는 짝을 찾습니다. 그다음, 그 둘을 제거한 뒤, 앞뒤로 문자열을 이어 붙입니다. 이 과정을 반복해서 문자열을 모두 제거한다면 짝지어 제거하기가 종료됩니다. 문자열 S가 주어졌을 때, 짝지어 제거하기를 성공적으로 수행할 수 있는지 반환하는 함수를 완성해 주세요. 성공적으로 수행할 수 있으면 1을, 아닐 경우 0을 리턴해주면 됩니다.
예를 들아. 문자열 S = baabaa
라면
b aa baa → bb aa → aa →
의 순서로 문자열을 모두 제거할 수 있으므로 1을 반환합니다.
[제한 사항]
[입출력 예]
numbers | return |
---|---|
baabaa | 1 |
cdcd | 0 |
- 혼자서 문제를 해결
- 힌트를 보고 해결
- 답을 보고 해결
pop
하여 스택에서 제거한다.1
, 그렇지 않다면 0
을 반환한다.def solution(s):
stack = []
for c in s:
if not stack:
stack.append(c)
else:
if stack[-1] != c:
stack.append(c)
else:
stack.pop(-1)
if stack:
return 0
else:
return 1
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)
출처: 다른사람의풀이
스택의 가장 기본적인 개념을 적용해서 풀 수 있는 문제였다.
후입선출
이라는 특징을 중복 제거라는 문제에 적용할 수 있다는 점에서, 알고리즘을 단순히 이해하는 것 이상으로 잘 활용할 수 있어야 한다는 것을 느끼게 해준 문제였다.