본문 바로가기
공부/프로그래머스

[프로그래머스] 12973번

by _음주토끼_ 2022. 6. 15.

테스트 케이스로 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