코테준비/알고리즘
[프로그래머스] 짝지어 제거하기
아놀드금자
2023. 11. 2. 01:52
728x90
https://school.programmers.co.kr/learn/courses/30/lessons/12973
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
처음에는
while문과 for문을 활용해서
s[i] == s[i-1]를 비교해서 같으면 제거하고
제거한 리스트에서 다시 또 비교하는걸 반복했다
그랬더니 아뿔싸 시간초과
질문게시판 들어갔다가 스택이라는 글자를 봐버렸다
이 힌트 없었으면 못풀었을듯
이런생각 어떻게 하는거야~~~
스택을 만들어서 top과 같은문자면 pop
같은문자가 아니면 push
반복해서 성공적으로 수행가능한 경우면 스택이 텅 비어있고
불가능한 문자열이면 스택에 문자가 남아있다
문자열을 한번만 돌아도 풀수있다!!!
잊지말자 스택
def solution(s):
stack = [s[0]]
for i in range(1,len(s)):
if len(stack) == 0:
stack.append(s[i])
elif stack[-1] == s[i]:
stack.pop()
elif stack[-1] != s[i]:
stack.append(s[i])
if len(stack) == 0:
return 1
else:
return 0
728x90