알고리즘
프로그래머스 Lv. 2 짝지어 제거하기 Python
스위태니
2024. 1. 8. 14:08
728x90
문제 링크
https://school.programmers.co.kr/tryouts/72055/challenges
정답 코드
def solution(s):
stack = []
for idx in range(len(s)):
alpha = s[idx]
if stack:
last = stack[-1]
if last == alpha:
stack.pop()
else:
stack.append(alpha)
else:
stack.append(alpha)
if stack:
return 0
return 1
풀이 방법
- 스택이 비면 alpha를 넣는다.
- 스택에 값이 있으면 마지막 값 -1번째 인덱스와 현재 alpha를 비교한다.
- 비교했을 때 값이 같으면 stack에서 pop을 한다.
- 값이 다르면 stack에 alpha를 append한다.
- 반복문이 끝났는데 stack이 존재하면 제거가 불가능 하므로 0을 존재하지 않으면 1을 return한다.
느낀점
- 몰라서 친구한테 물어봤다...
- 10만 이상의 값이 나오는 문제는 2중 반복문을 사용하지 말자.
728x90