알고리즘 풀이/프로그래머스

[Level 2] 짝지어 제거하기

mhko411 2021. 3. 4. 09:46
728x90

programmers.co.kr/learn/courses/30/lessons/12973

 

코딩테스트 연습 - 짝지어 제거하기

짝지어 제거하기는, 알파벳 소문자로 이루어진 문자열을 가지고 시작합니다. 먼저 문자열에서 같은 알파벳이 2개 붙어 있는 짝을 찾습니다. 그다음, 그 둘을 제거한 뒤, 앞뒤로 문자열을 이어 붙

programmers.co.kr


접근

스택을 활용하였다.

스택의 top과 다른 글자면 push하고 같은 글자면 pop하여 스택이 비어있는지 그렇지 않은지에 따라 최종해를 반환한다.

 

구현

입력된 문자열을 리스트로 변경한다.

각 리스트를 탐색하면서 스택의 top과 같다면 pop, 다르다면 push를 한다.

리스트를 모두 탐색했을 때 스택에 값이 들어있다면 실패, 스택이 비어있다면 성공을 반환한다.

def solution(s):
    answer = 0
    ss = list(map(str, s))
    stack = []
    for s in ss:
        # 스택이 비어있다면 문자를 추가
        if len(stack) == 0:
            stack.append(s)
        else:
            # 스택의 top과 같다면 pop
            if stack[-1] == s:
                stack.pop()
            # 스택의 top과 다르다면 push    
            else:
                stack.append(s)
    # 위 과정에서 스택이 비어있다면 성공            
    if len(stack) == 0:
        answer = 1
    else:
        answer = 0

    return answer

'알고리즘 풀이 > 프로그래머스' 카테고리의 다른 글

[Level 2] 삼각 달팽이  (0) 2021.03.05
[Level 2] 멀쩡한 사각형  (0) 2021.03.04
[Level 2] N개의 최소공배수  (0) 2021.03.04
[Level 2] 최댓값과 최솟값  (0) 2021.03.04
[Level 2] 소수 찾기  (0) 2021.03.04