https://school.programmers.co.kr/learn/courses/30/lessons/12973
프로그램 제작자
코드 중심 개발자를 고용하십시오. 배치 기반 위치 매칭. 프로그래머의 개발자별 프로필에 가입하고 기술 호환성이 좋은 회사와 연결하십시오.
Programmer.co.kr
문제 접근
조건에 따라 모든 문자열을 제거할 수 있으면 1을 반환하고 그렇지 않으면 0을 반환하는 함수를 구현하는 문제.
아이디어
- 문자열 길이가 10^6이므로 O(n+@) 시간복잡도로 풀어야 합니다.
- 중복된 for문으로 각각 완전검색을 해보았지만 구현이 복잡하고 시간 복잡도 때문에 불가능하다.
- 이전 문자와 다음 문자를 비교한다는 점에서 올바른 괄호 문제와 유사한 것으로 간주됩니다. -> 스택을 사용합니다.
- 문자열을 스택에 푸시하고 동일한 문자가 발생하면 제거하는 형식으로 구현됩니다.
올바른 응답 코드
def solution(s):
if len(s) % 2 !=0:
return 0
stack = ()
for i in range(len(s)):
if len(stack) == 0 or stack(-1) != s(i):
stack.append(s(i))
elif s(i) == stack(-1):
stack.pop()
return 1 if len(stack) == 0 else 0