반응형
문제설명
https://programmers.co.kr/learn/courses/30/lessons/12973
사고과정
- 같은 알파벳이 2개 연속으로 있는 것을 제거해야 한다는 점에서 스택을 이용해야 하는 문제라는 게 감이 팍 왔다.
- 그래서 연습장에 스택으로 어떻게 구현해야 할지 고민하는 시간을 가졌다. 몇 번의 시행착오 끝에 주어진 문자열 s 원소를 loop로 돌면서 스택이 비어있거나 스택 마지막 원소가 현재 돌고 있는 원소랑 동일하지 않으면 스택에 넣어준다. 이 말은 곧 같은 알파벳이 2개 연속으로 있지 않다는 것을 의미!
- 하지만 현재 루프돌고 있는 원소가 스택의 마지막 원소랑 동일하다면 그 원소도 넣지 않고 스택의 마지막 원소를 pop해준다.
- 이런 과정을 수행하면서 루프를 모두 돌고 난 후, 스택에 아무런 원소가 없다고 한다면 그것은 짝지어 제거하기 규칙을 통해서 문자열 전체를 다 제거하는 데 성공한 것이므로 1을 반환하고 스택에 원소가 1개라도 있다면 제거하는 데 성공하지 못한 것이므로 0을 반환해주면 된다!
- 점점 스택에 익숙해지고 있다! 문제 유형이 명시되어 있지 않았는데 스스로 스택 유형이라는 걸 캐치했다!(스택에 약했는데 그래도 점점 나아지는 듯 하다)
풀이
def solution(s):
stack = []
for x in s:
if not stack or x != stack[-1]:
stack.append(x)
elif x == stack[-1]:
stack.pop()
if stack:
return 0
else:
return 1
반응형
'알고리즘 삽질장' 카테고리의 다른 글
[프로그래머스] 메뉴 리뉴얼 (0) | 2021.12.14 |
---|---|
[프로그래머스] 행렬 테두리 회전하기 (0) | 2021.12.14 |
[프로그래머스] 타겟 넘버 (0) | 2021.12.13 |
[프로그래머스] 더 맵게 (0) | 2021.12.12 |
[프로그래머스] 기능개발 (0) | 2021.12.10 |