728x90
반응형
문제:
짝지어 제거하기는, 알파벳 소문자로 이루어진 문자열을 가지고 시작합니다. 먼저 문자열에서 같은 알파벳이 2개 붙어 있는 짝을 찾습니다. 그다음, 그 둘을 제거한 뒤, 앞뒤로 문자열을 이어 붙입니다. 이 과정을 반복해서 문자열을 모두 제거한다면 짝지어 제거하기가 종료됩니다. 문자열 S가 주어졌을 때, 짝지어 제거하기를 성공적으로 수행할 수 있는지 반환하는 함수를 완성해 주세요. 성공적으로 수행할 수 있으면 1을, 아닐 경우 0을 리턴해주면 됩니다.
예를 들어, 문자열 S=baabaa라면
baabaa -> bbaa -> aa ->
의 순서로 문자열을 모두 제거할 수 있으므로 1을 반환합니다.
풀이 방법:
스택의 개념을 이용해서 풀었다. 문자열 s를 한 개씩 answer_list에 넣으면서 끝 두 값이 일치하면 제거하고 그렇지 않다면 유지한채로 다시 쌓는 방식이다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | def solution(s): answer_list=[] s=list(s) idx=0 while(idx!=len(s)): answer_list.append(s[idx]) idx+=1 if len(answer_list)>1: if (answer_list[-1]==answer_list[-2]): answer_list.pop() answer_list.pop() if len(answer_list)==0: return 1 else: return 0 | cs |
728x90
반응형
'Algorithm > Python' 카테고리의 다른 글
[Programmers]Lv 3. 숫자 게임 (0) | 2019.03.23 |
---|---|
[Programmers]Lv 2.JadenCase 문자열 만들기 (0) | 2019.03.22 |
[Programmers]Lv 2.행렬의 곱셈 (0) | 2019.03.20 |
[Programmers]Lv 3.최고의 집합 (0) | 2019.03.19 |
[Programmers]Lv 2. 피보나치 수 (0) | 2019.03.18 |