99클럽 코테 스터디 36일자 TIL +removing-stars-from-a-string

이월(0216tw)·2024년 6월 24일
0

99클럽/알고리즘풀이

목록 보기
34/38

문제 출처

https://leetcode.com/problems/removing-stars-from-a-string(leetcode)

학습 키워드

큐/스택

시도 방법

stack의 후입선출 개념을 활용해 문제를 풀었다.

내가 작성한 코드

class Solution {
    public String removeStars(String s) {

        Stack<Character> stack = new Stack<>(); 

        for(int i = 0 ; i<s.length(); i++) {

            if(s.charAt(i) == '*') {
                stack.pop(); 
            } else {
                stack.push(s.charAt(i)); 
            }
        }
        StringBuilder answer = new StringBuilder(); 
       
        for(Character chr : stack) {
            answer.append(chr); 
        }

        return answer.toString(); 
    }
}

코드설명

현재 값이 가 아니면 stack에 push한다.
현재 값이
이면 stack의 값을 pop한다.

데이터 예시 : "leet**cod*e"

l -> push [l]
e -> push [l,e]
e -> push [l,e,e]
t -> push [l,e,e,t]
* -> pop [l,e,e]
* -> pop [l,e]
c -> push [l,e,c]
o -> push [l,e,c,o]
d -> push [l,e,c,o,d]
* -> pop [l,e,c,o]
e -> push [l,e,c,o,e] 리턴

출력결과


새롭게 알게된 점

stack의 가장 먼저 들어간 값을 꺼내려면 뒤의 값부터 꺼내서 reverse를 해야한다고 생각했다. 그런데 그냥 for문으로 쓰니까 stack이 앞에서부터 출력이 되어서 바로 append하고 문제를 풀어낼 수 있었다.

다음에 풀어볼 문제 - minimum-add-to-make-parentheses-valid



#99클럽 #코딩테스트 준비 #개발자 취업 #항해99 #TIL

profile
Backend Developer (Financial)

0개의 댓글