티스토리 뷰
728x90
https://programmers.co.kr/learn/courses/30/lessons/12973
- 해설 :
문자열 s가 주어질 때 연속된 문자 2개가 나올 경우 이를 짝지어 제거한다. 이 과정을 반복하면 최종적으로 문자열을 빈 문자열로 만들 수 있는지 찾는 문제이다.
- 풀이 :
stack을 사용하면 쉽게 해결할 수 있는 문제이다.
문자열 s의 앞에서부터 stack에 넣으며, 넣을 때마다 stack의 top과 비교하고 같으면 stack에서 빼준다. 문자열을 한 번 순회하며 이 작업을 수행했을 때 stack에 원소가 존재한다면 빈 문자열로 만드는 것이 불가능하고 비어있다면 가능하다.
1 2 3 4 5 6 7 8 9 10 11 12 | def solution(s): answer = [s[0]] l = len(s) for i in range(1,l): if answer: if answer[-1] == s[i]: answer.pop() else: answer.append(s[i]) else: answer.append(s[i]) return 0 if answer else 1 | cs |
320x100
'Algorithm > Data Structure' 카테고리의 다른 글
(Python) - 프로그래머스 : 올바른 괄호 (0) | 2022.01.21 |
---|---|
(Python) - 프로그래머스(2018 KAKAO BLIND RECRUITMENT) : [1차] 캐시 (0) | 2022.01.21 |
(Python) - 프로그래머스 : 더 맵게 (0) | 2022.01.18 |
(Python) - 프로그래머스 : 기능개발 (0) | 2022.01.17 |
(Python) - 프로그래머스 (2019 카카오 개발자 겨울 인턴쉽) : 크레인 인형뽑기 게임 (0) | 2022.01.17 |
댓글
© 2022 WonSeok, All rights reserved