테스트 케이스로 baabaa, cdcd가 나왔다. 문제를 이해하기에는 두 개의 케이스로도 충분했다.
앞뒤로 2개씩 붙어있는 같은 알파벳이 있으면 짝지어 제거한다.
그럼 baabaa의 경우에는 baabaa->bbaa->aa 같은 식으로 문자열을 제거할 수 있다.
우선 stack 배열을 만들고, 숫자 아무거나 하나 넣어둔다.
s는 알파벳 문자열이기 때문에 처음엔 같은 문자로 확인되지 않는다.
stack[-1]과 문자열 첫 문자를 비교하고 같지 않으므로 stack에 쌓는다.
가장 최근의, 인접한 문자는 stack[-1]로 볼 수 있다.
stack[-1]과 s의 다음 문자를 비교한다. 만약 같은 문자라면 stack.pop(-1)을 해준다.
애X팡처럼 두개가 일치할 때 팡팡 터뜨려주면 된다.
쌓이고, 터지고, 쌓이고, 쌓이고, 터지고, 터지고...
그렇게 반복하다가 문자열 s의 문자를 다 돌면 stack 내 원소 개수가 몇개인지 확인한다.
우리는 처음에 stack 배열을 만들었을 때 숫자 아무거나 하나를 넣어 뒀기 때문에,
문자열이 모두 제거되었다면 stack의 length는 1일 것이다. 그럼 1을 반환한다.
하지만 문자열이 모두 제거되지 않는다면 1보다 클 것이다. 그럼 0을 반환하면 된다.
'공부 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 43165번 (0) | 2022.06.15 |
---|---|
[프로그래머스] 67256번 (0) | 2022.06.15 |
[프로그래머스] 42883번 (0) | 2022.06.15 |
[프로그래머스] 42586번 (0) | 2022.06.15 |
[프로그래머스] 42747번 (0) | 2022.06.15 |