hye-log

[프로그래머스]짝지어 제거하기(Python) 본문

CodingTest/Programmers

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

iihye_ 2022. 10. 2. 16:14

0. 문제 링크

https://school.programmers.co.kr/learn/courses/30/lessons/12973

 

프로그래머스

코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

programmers.co.kr

 

1. 문제 설명

1) 같은 문자가 연속으로 나오면 제거

2) 제거 후에도 같은 문자가 연속이면 제거

 

2. 입출력

# input
s = 'baabaa'

# output
result = 1

 

3. 코드

def solution(s):
    answer = 0
    stack = []

    for i in range(len(s)):                                 # 주어진 문자열의 개수만큼 반복
        if len(stack) > 0 and stack[-1] == s[i]:            # stack이 비어 있지 않고, 이전 문자와 현재 문자가 같으면
            stack.pop()                                     # stack에 마지막 문자 빼기
        else:
            stack.append(s[i])                              # stack에 현재 문자 넣기

    if len(stack) == 0:                                     # stack이 비어 있으면
        answer = 1                                          # 짝지어 제거하기 성공

    return answer

 

실행 결과

 

4. 회고

처음에는 문자열을 리스트로 변환한 다음에 왼쪽, 오른쪽을 비교해가면서 풀려고 했는데, 리스트의 중간을 삭제해버리면 인덱스 번호가 꼬이는 문제가 발생했다. 그래서 질문하기에서 힌트를 얻어서 stack을 이용해서 풀어보았다. 처음에는 pop이 아닌 remove를 사용했는데 remove 함수를 잘못 알고 있었었다. pop은 마지막 요소를 빼고, remove는 특정 요소를 제거하는 것이기 때문에 둘을 구분해서 써야겠다고 배웠다. stack을 이용한 문제를 처음 풀어본거 같은데 앞으로도 이런 유형은 stack으로 바로 풀 수 있도록 아이디어를 하나 얻어가는 것 같다.

 

 

5. Github

https://github.com/iihye/Algorithm/blob/main/Programmers/remove_pair.py

 

GitHub - iihye/Algorithm

Contribute to iihye/Algorithm development by creating an account on GitHub.

github.com

 

728x90
Comments