https://school.programmers.co.kr/learn/courses/30/lessons/120853
숫자와 "Z"가 공백으로 구분되어 담긴 문자열이 주어집니다. 문자열에 있는 숫자를 차례대로 더하려고 합니다. 이 때 "Z"가 나오면 바로 전에 더했던 숫자를 뺀다는 뜻입니다. 숫자와 "Z"로 이루어진 문자열 s가 주어질 때, 머쓱이가 구한 값을 return 하도록 solution 함수를 완성해보세요.
임시 저장 변수 사용
tmp 변수를 두어서 마지막 숫자를 저장해두었다가 Z를 만나면 tmp를 빼주었다.
Stack 사용
Z가 아닐때만 stack에 push하고 Z를 만나면 맨 위에 저장된 마지막 숫자를 pop으로 제거한다.
class Solution {
public int solution(String s) {
int answer = 0;
int tmp = 0;
String[] arr = s.split(" ");
for(String a : arr) {
if(a.equals("Z")) {
answer -= tmp;
} else {
answer += Integer.parseInt(a);
tmp = Integer.parseInt(a);
}
}
return answer;
}
}
import java.util.*;
class Solution {
public int solution(String s) {
int answer = 0;
String[] arr = s.split(" ");
Stack<Integer> stack = new Stack<>();
for(String str : arr) {
if(str.equals("Z")) stack.pop();
else stack.push(Integer.parseInt(str));
}
for(int i : stack) {
answer += i;
}
return answer;
}
}