코테준비/알고리즘

[프로그래머스] 짝지어 제거하기

아놀드금자 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

'코테준비 > 알고리즘' 카테고리의 다른 글

[프로그래머스] 모음사전  (1) 2023.11.09
[프로그래머스]해시-전화번호 목록  (1) 2023.11.02
Jadencase  (0) 2023.10.20
유클리드 호제법  (0) 2023.09.05
백트래킹  (0) 2023.08.24