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을 리턴한다.