[프로그래머스 Lv2] 짝지어 제거하기 (파이썬)

Jewon Joel Park·2022년 7월 20일
0

Programmers-solution

목록 보기
22/34

문제 링크


문제 설명

문자열에서 같은 알파벳이 연달아 2번 나오면 잘라내고 이어 붙이기를 반복하여 문자열을 모두 제거 가능한지 여부를 반환하는 함수 작성


풀이 코드

def solution(s):
    stack = [s[0]]
    for c in s[1:]:
        if len(stack) > 0:
            if stack[-1] == c:
                stack.pop()
            else:
                stack.append(c)
        else:
            stack.append(c)
    if len(stack) > 0:
        return 0
    else:
        return 1

코드 풀이

  1. 문자열이 두 번 연달아 나올 경우 사라진다는 조건에서 Stack을 사용하여 풀어보기로 결정
  2. 문자열의 길이가 1,000,000 이하의 자연수 이므로 list타입 변수 stack에 문자열의 첫 문자를 넣고 시작
  3. 이후 남은 문자열을 순회하며 stack의 길이가 1 이상인 경우, stack의 마지막 문자와 비교하여 서로 같을 경우 stackpop()하며, 서로 다를 경우 순회하던 문자를 stack에 추가
  4. stack의 길이가 0일 경우 비교할 문자가 없으므로 순회하던 문자를 stack에 추가
  5. for Loop 종료 후 stack의 길이가 1 이상일 경우, 완전 삭제가 이루어지지 않았으므로 0 반환
  6. stack의 길이가 0일 경우 완전 삭제가 이루어졌으므로 1 반환
profile
10년을 돌고 돌아 마침내 제자리를 찾은 문과 출신 Python 개발자의 인생기록장

0개의 댓글