문제 :

- 문제를 보면 주어진 문자열에서 짝을 지어야 한다는 말을 보고 '스택'이 생각났다.
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을 리턴한다.
'CodingTest > 프로그래머스' 카테고리의 다른 글
완전탐색 - Itertools (0) | 2024.10.18 |
---|---|
[프로그래머스] 타겟 넘버 (0) | 2024.08.05 |
[프로그래머스]게임 맵 최단거리 (0) | 2024.08.05 |
[프로그래머스] 할인 행사 (0) | 2024.08.03 |
[프로그래머스] 귤 고르기 (0) | 2024.08.03 |