문제
문제 설명
짝지어 제거하기는, 알파벳 소문자로 이루어진 문자열을 가지고 시작합니다. 먼저 문자열에서 같은 알파벳이 2개 붙어 있는 짝을 찾습니다. 그다음, 그 둘을 제거한 뒤, 앞뒤로 문자열을 이어 붙입니다. 이 과정을 반복해서 문자열을 모두 제거한다면 짝지어 제거하기가 종료됩니다. 문자열 S가 주어졌을 때, 짝지어 제거하기를 성공적으로 수행할 수 있는지 반환하는 함수를 완성해 주세요. 성공적으로 수행할 수 있으면 1을, 아닐 경우 0을 리턴해주면 됩니다.
예를 들어, 문자열 S = baabaa 라면
b aa baa → bb aa → aa →
의 순서로 문자열을 모두 제거할 수 있으므로 1을 반환합니다.
제한사항- 문자열의 길이 : 1,000,000이하의 자연수
- 문자열은 모두 소문자로 이루어져 있습니다.
입력 & 출력
입출력 예
sresult
baabaa | 1 |
cdcd | 0 |
풀이 과정
1. 두 개씩 짝지어서 제거를 하면 되는 문제였다. 제거를 해야 한다면 스택과 팝을 이용하면 된다.
2. 처음에는 s값을 한개씩 빼서 stack에 차곡차곡 append 해주는 것으로 시작하여 이미 저장된 값과 현재의 값을 계속 비교하면서
같은 숫자이면 pop을 하는 방식으로 진행하면 되겠다.
코드
def solution(s):
stack = []
for c in s:
if stack:
if stack[-1] == c:
stack.pop()
else:
stack.append(c)
else:
stack.append(c)
if stack:
return 0
else:
return 1
'Algorithm' 카테고리의 다른 글
[프로그래머스] 코딩테스트 연습2019 카카오 개발자 겨울 인턴십 크레인 인형뽑기 게임 (0) | 2022.07.17 |
---|---|
[프로그래머스] 코딩테스트 연습월간 코드 챌린지 시즌1 두 개 뽑아서 더하기 (0) | 2022.07.15 |
[프로그래머스] 코딩테스트 연습깊이/너비 우선 탐색(DFS/BFS)타겟 넘버 (0) | 2022.07.10 |
[프로그래머스] 코딩테스트 연습월간 코드 챌린지 시즌1내적 (0) | 2022.07.04 |
[프로그래머스] 코딩테스트 연습연습문제 직사각형 별찍기 (0) | 2022.07.03 |