[Stack] Decode String

2021. 3. 29. 15:21프로그래밍-코딩테스트/LeetCode

string을 정해진 규칙에 따라 decode하는 문제

모양이 정해진 연쇄적인 string을 처리할때에는 stack을 사용한다

 

다양하게 index를 활용해보았다.

일단 string, number, bracket 섞여있기때문에, 따로따로 분리해서 처리해준다.

이때 loop를 한번 처리할때마다 pt를 증가시키고, pt가 s의 길이와 같아지면 모든 처리가 끝난셈이므로 종료한다

 

일단 number가 들어오면 currNum에 숫자를 입력해준다

 

마찬가지로 string이 들어오면 currStr에 추가해준다

 

괄호가 열리면 currStr과 currNum을 각각 stack에 넣는다. 

currStr은 앞에서 처리가 끝나서 문자열로 변환된 값이다

다음에 쓰기 위해 일단 보관용으로 넣어둔다

 

괄호가 닫히면, numStack에 있는 숫자만큼 currStr을 반복한다.

이때 lettersStack에 넣어둔 문자를 가져와서 결과에 합친다.

 

 

도식화하면 다음과 같다

약간 복잡한감이 있으나 stack두개를 이용해 한쪽에는 반복횟수를, 한쪽에는 지금까지 만든 문자를 저장해둔다고 생각하면 쉬울것이다.

'프로그래밍-코딩테스트 > LeetCode' 카테고리의 다른 글

[Tree] Flatten Binary Tree to Linked List  (0) 2021.03.29
[Array] Container With Most Water  (0) 2021.03.29
[DP] Unique Binary Search Trees  (0) 2021.03.29
[DP] Unique Paths  (0) 2021.03.29
[DP] Minimum Path Sum  (0) 2021.03.29