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

김지민·2022년 1월 27일
post-thumbnail

📌 문제

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


📌 문제를 이해해보자

먼저 문자열에서 같은 알파벳이 2개 붙어 있는 짝을 찾습니다. 그다음, 그 둘을 제거한 뒤, 앞뒤로 문자열을 이어 붙입니다.


📌 생각 과정

여기서 주목해야 할 점은 짝지어서 2개씩 이에요!

예를 들어

baabaa에서 비교 순서를 문자열 인덱스를 통해서 알아보겠습니다.

baabaa
ba -> [비교인덱스1 : 0,비교인덱스2: 1]
aa -> [비교인덱스1 : 1,비교인덱스2: 2]

bbaa
bb -> [비교인덱스1 : 0,비교인덱스2: 1]

aa
aa -> [비교인덱스1 : 0,비교인덱스2: 1]

  • 비교 이후에 두 문자열이 다르면 비교 인덱스가 변하는데, 같으면 이전 비교 인덱스와 다음 문자열을 비교해주는 것을 알 수 있습니다.
  • 앞에 지나온 문자열이 같지 않는다면 곧 죽어도 짝지어 사라질 수 없다. 때문에 사라진 문자열 이전의 문자열 과 사라진 문자열 다음의 문자열 만 고려해서 풀면 된다.
  • 따라서 지난 문자열에 대해서는 다른 곳에 저장하고 저장한 문자열의 마지막 값만 비교해준다.

📌 알고리즘

def solution(s):
    
    pass_string  = []
    
    for i in s:
        if len(pass_string) == 0:
            pass_string.append(i)
        elif pass_string[-1] == i:
            pass_string.pop()
        else:
            pass_string.append(i)
            
    if len(pass_string) == 0:
        return 1
    else:
        return 0

📌 생각해보기

🤔 어떤 로직을 암기할까?

2개 비교는 pop과 append를 통해서 시도해보자!!

profile
💡Habit is a second nature. [Git] https://github.com/Kimjimin97

0개의 댓글