티스토리 뷰

728x90

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

 

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

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

programmers.co.kr

 

  • 해설 :

문자열 s가 주어질 때 연속된 문자 2개가 나올 경우 이를 짝지어 제거한다. 이 과정을 반복하면 최종적으로 문자열을 빈 문자열로 만들 수 있는지 찾는 문제이다.

 

 

 

 

  • 풀이 :

stack을 사용하면 쉽게 해결할 수 있는 문제이다. 

문자열 s의 앞에서부터 stack에 넣으며, 넣을 때마다 stack의 top과 비교하고 같으면 stack에서 빼준다. 문자열을 한 번 순회하며 이 작업을 수행했을 때 stack에 원소가 존재한다면 빈 문자열로 만드는 것이 불가능하고 비어있다면 가능하다.

 

 

 

 

1
2
3
4
5
6
7
8
9
10
11
12
def solution(s):
    answer = [s[0]]
    l = len(s)
    for i in range(1,l):
        if answer:
            if answer[-1== s[i]:
                answer.pop()
            else:
                answer.append(s[i])
        else:
            answer.append(s[i])
    return 0 if answer else 1
cs
320x100
댓글
© 2022 WonSeok, All rights reserved