문제
풀이
- 처음에 무한반복문 + 문자열 슬라이싱으로 순수 구현을 하였는데 시간초과 + 효율성 테스트 탈락으로 실패하였다.
- 시간복잡도에 효율적인 stack을 이용하니 성공하였다.
- 주어진 문자열의 길이가 홀수일 시, 무조건 답이 0이니 처음에 홀 짝, 판별을 먼저 하는게 좋다.
코드
def solution(word: str) -> int:
if len(word) % 2 == 1:
return 0
stack = [word[0]]
for x in range(1, len(word)):
if not stack:
stack.append(word[x])
continue
alpha = stack[-1]
if alpha == word[x]:
stack.pop()
else:
stack.append(word[x])
return 1 if not stack else 0
if __name__ == '__main__':
print(solution('baabaa'))
print(solution('cdcd'))
print(solution("abccba"))
print(solution("abcccba"))
print(solution("abccccbaaa"))
print(solution("abccaabaa"))
print(solution("a"))
결과
출처 & 깃허브
programmers 짝지어 제거하기
github