나의 풀이
import java.util.*;
class Solution {
public int solution(String s) {
ArrayList<String> answer = new ArrayList<>();
String[] split = s.split(" ");
for(int i=0; i<split.length; i++){
if(split[i].equals("Z")) answer.remove(answer.size()-1);
else{answer.add(split[i]); }
}
for(int i=0; i<answer.size(); i++) {
System.out.println(answer.get(i));
}
return answer.stream().mapToInt(Integer::parseInt).sum();
}
}
▶ if문은 필터 역할을 할 수 있다.
▶ list에 어떤 요소를 넣기 전에 그 요소가 문자열 "Z"와 같다면, 그 요소를 넣지 말지
▶ 현재 리스트에 담겨 있는 마지막 인덱스의 요소를 remove() 메서드를 통해서 삭제해 버리면 된다.
다른 사람의 풀이
import java.util.*;
class Solution {
public int solution(String s) {
int answer = 0;
Stack<Integer> stack = new Stack<>();
for (String w : s.split(" ")) {
if (w.equals("Z")) {
stack.pop();
} else {
stack.push(Integer.parseInt(w));
}
}
for (int i : stack) {
answer += i;
}
return answer;
}
}
▶ stack구조에서 pop() 메서드를 사용하면, 가장 위층에 있는 요소를 쉽게 빼낼 수 있다.