CodingTest/프로그래머스
[프로그래머스] 짝지어 제거하기
Jay_J
2024. 8. 2. 06:44
문제 :
- 문제를 보면 주어진 문자열에서 짝을 지어야 한다는 말을 보고 '스택'이 생각났다.
def solution(s):
stk = []
for i in range(len(s)):
if not stk:
stk.append(s[i])
continue
if stk[-1] != s[i]:
stk.append(s[i])
continue
if stk[-1] == s[i]:
stk.pop()
continue
if stk:
return 0
else:
return 1
우선, 빈 스택을 하나 만들어 준다.
- for문으로 입력값으로 주어진 문자열을 하나씩 순회하며
- 스택 안에 아무 값도 없다면, 스택에 현재 검사중인 문자를 넣어준다.
- 그리고 continue를 이용해 다음 루프로 넘어간다.
- 스택 안에 무언가 있다면, 현재 스택의 맨 윗값과 현재 검사중인 요쇼가 같은지 확인한다.
- 같지 않다면, 현재 검사중인 요소를 스택에 넣어준다.
- 그리고 continue를 통해 다음 루프로 넘어간다.
- 스택 안에 무언가 있고, 현재 값과 스택의 맨 위의 값이 같다면(문제에서 요구하는 짝을 지을 수 있는 경우),
- 현재 스택의 맨 위의 값을 추출한 후, 바로 다음 루프로 넘어간다.
이제 모든 for문이 끝나고, 마지막에 스택에 요소가 남아있다면(짝을 지어 문자열을 비우지 못한 경우) 0을 리턴하고 아니라면 1을 리턴한다.