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하고 문제를 풀어낼 수 있었다.
#99클럽 #코딩테스트 준비 #개발자 취업 #항해99 #TIL