📝 문제
> 짝지어 제거하기는, 알파벳 소문자로 이루어진 문자열을 가지고 시작합니다.
# 1. 문자열에서 같은 알파벳이 2개 붙어 있는 짝을 찾습니다.
# 2. 그 둘을 제거한 뒤, 앞뒤로 문자열을 이어 붙입니다.
# 3. 이 과정을 반복해서 문자열을 모두 제거한다면 짝지어 제거하기가 종료됩니다.
# 4. 성공적으로 수행할 수 있으면 1을, 아닐 경우 0을 리턴해주면 됩니다.
- 이 문제는 최근에 들어온 문자와 들어올 문자가 같으면 둘다 pop을 시켜야하는 문제라서 stack이 적절할 것이라 생각해 stack을 이용해서 문제를 풀었다.
https://programmers.co.kr/learn/courses/30/lessons/12973
🎨 풀이
💡 첫 번째 시도 = 성공 코드
def solution(s):
answer = -1
stack = []
for i in range(len(s)):
if len(stack) != 0 :
if stack[-1] == s[i]:
stack.pop()
else :
stack.append(s[i])
else : stack.append(s[i])
if len(stack) == 0:
answer = 1
else : answer = 0
return answer
> 핵심 : 스택 이용!
1. stack이 비어있다면 그냥 append 시킨다.
2-1. 만약 stack[-1]과 s[i], 즉 스택의 마지막 꺼와 들어오려하는 문자가 같다면 스택에 있는 문자를 pop 시킨다.
2-2. 그게 아니라면 s[i]를 stack에 append 시킨다.
3. stack이 비어있다면 answer에 1을, 그렇지 않다면 answer에 0을 넣는다.
끝~
⭐ 느낀점
> 스택 잘 써서 기분이 좋다. 스택이 딱 떠오른 게 신기하기도 하고, 문제를 많이 풀다보면 그렇게 되나 싶기도 하고. 여튼 아주 뿌듯하다. 그래도 공부한 게 좀 도움이 되는 것 같다. 히히
'알고리즘 공부 > 프로그래머스' 카테고리의 다른 글
[프로그래머스 / Level 1] 최소직사각형 (파이썬) (0) | 2022.05.13 |
---|---|
[프로그래머스 / Level 1] 나머지가 1이 되는 수 찾기 (파이썬) (0) | 2022.05.12 |
[프로그래머스 / Level 1] 신고 결과 받기 (파이썬) (1) | 2022.05.10 |
[프로그래머스 / Level 1] 문자열을 정수로 바꾸기 (파이썬) (0) | 2022.05.09 |
[프로그래머스 / Level 1] 짝수와 홀수 (파이썬) (0) | 2022.05.08 |