👨🏻💻알고리즘/프로그래머스
[프로그래머스/Python] Lv2. 짝지어 제거하기
waveofmymind
2023. 3. 7. 19:41
문제 링크: https://school.programmers.co.kr/learn/courses/30/lessons/12973
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
코드
def solution(s):
stack = []
for i in range(len(s)):
if not stack:
stack.append(s[i])
else:
if stack[-1] == s[i]:
stack.pop()
else:
stack.append(s[i])
if stack:
return 0
else:
return 1
풀이
- 스택을 이용해서 올바른 괄호 검사 문제를 풀듯이 접근하면 된다.
- 일단 스택이 비었으면 푸시를 한다.
- 스택에 값이 있을 경우, 마지막으로 넣은 값과 현재 값을 비교해서 같을 경우 마지막으로 넣은 값을 팝해준다.
- 팝하는 경우 현재 값을 푸시하지 않고 넘어간다.
- 비교해서 다를 경우에는 현재 값을 푸시한다.
- for문이 끝나고 스택에 값이 남아있으면 더이상 제거할 수 있는 문자가 없으므로 0을 리턴하고, 비어있을 경우 1을 리턴한다.