문제 설명 및 제한사항
아이디어 및 해결 방법
코드
def solution(s):
# stack과 pointer 하나씩을 관리합니다.
# stack은 지금까지 처리된 문자열, pointer는 해당 문자열의 맨 뒤 문자의 인덱스를 나타냅니다.
stack, ptr = [], -1
# 문자열을 하나씩 읽어가면서, stack에 추가합니다.
for char in s:
# 다만, 추가하기 전에, 지금 stack의 맨 뒤 문자와 해당 문자가 같으면
# stack에서 하나를 pop하고, pointer는 한칸 뒤로 무릅니다.
# 그리고 다음 문자를 확인하러 넘어갑니다.
if ptr != -1 and stack[ptr] == char:
stack.pop()
ptr -= 1
continue
# 만약 문자열 짝짓기가 안 됐다면, stack에 해당 문자를 추가하고
# ptr를 하나 앞으로 전진합니다.
stack.append(char)
ptr += 1
# stack의 크기가 0이어야 수행 가능입니다.
return int(len(stack) == 0)
Python
복사
출처
프로그래머스 코딩테스트 연습 https://school.programmers.co.kr/learn/challenges