관리 메뉴

솜씨좋은장씨

[Programmers] 2017 팁스타운 - 짝지어 제거하기 (Python) 본문

Programming/코딩 1일 1문제

[Programmers] 2017 팁스타운 - 짝지어 제거하기 (Python)

솜씨좋은장씨 2022. 2. 13. 10:15
728x90
반응형

코딩 1일 1문제! 오늘의 문제는 프로그래머스의 짝지어 제거하기 입니다.

 

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

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

programmers.co.kr

👨🏻‍💻 문제 풀이

짝지어 제거하기는

baabaa 라는 단어가 있을 때 b aa baa -> bb aa -> aa -> 

위와 같이 특정 단어가 주어지면 그 안의 알파벳을 짝지어 없애는 과정을 거쳤을 때 아무것도 남지 않는지 남는지

확인하는 문제입니다.

 

이 문제는 스택을 활용하여 풀면 쉽습니다.

baabaa 의 경우에

앞에서부터 하나씩 꺼내서 현재 스택에 들어있는 값의 마지막 값과 같은 값이면 스택에서 값을 pop 하고

스택에 들어있는 값의 마지막 값과 다른 값일 경우에는 append 해주는 식으로 하여

마지막 알파벳 까지 갔을 때 스택에 남아있는 값이 없을 때

짝지어 제거하기에 성공하였다! 라고 파악합니다.

 

전체 코드는 아래를 참고해주세요.

👨🏻‍💻 코드 ( Solution )

def solution(s):
    answer = 0
    
    check_list = []
    
    for char in s:
        if len(check_list) == 0 or check_list[-1] != char:
            check_list.append(char)
        elif check_list[-1] == char:
            check_list.pop()  
        else:
             check_list.append(char)
            
    if len(check_list) == 0:
        answer = 1

    return answer

 

 

GitHub - SOMJANG/CODINGTEST_PRACTICE: 1일 1문제 since 2020.02.07

1일 1문제 since 2020.02.07. Contribute to SOMJANG/CODINGTEST_PRACTICE development by creating an account on GitHub.

github.com

Comments