

내가 작성한 코드
class Solution {
public int solution(String s) {
String[] arr = s.split(" "); // 공백을 기준으로 배열화
int answer = 0; // 더한 값을 담을 변수
for(int i = 0; i < arr.length; i++) { // arr 길이만큼 반복
if(arr[i].equals("Z")) { // arr[i]가 Z면
answer -= Integer.parseInt(arr[i-1]); // 전 인덱스 값 불러와서 빼기
} else { // 아니라면
answer += Integer.parseInt(arr[i]); // 지금 인덱스 값 더하기
}
}
return answer;
}
}
다른 사람의 코드
class Solution {
public int solution(String s) {
int answer = 0;
Stack<Integer> stack = new Stack<>(); // int Stack 생성
for (String w : s.split(" ")) { // 바로 배열화해서
if (w.equals("Z")) { // Z 면
stack.pop(); // 없애기(안넣기)
} else { // Z가 아니면
stack.push(Integer.parseInt(w)); // Stack에 int로 변환 후 추가
}
}
// Stack에 추가된 int 전부 더하기
for (int i : stack) {
answer += i;
}
return answer;
}
}
Stack?
1. 개요
- 위치:
java.util
패키지
- 구조: LIFO (Last In, First Out)
- 특징:
Vector
를 기반으로 구현됨.- Thread-safe(동기화 지원).
- 최근에는
Deque
(ArrayDeque) 사용이 권장됨.
2. 주요 메서드
메서드 | 설명 | 사용 예제 |
push(E item) | 스택에 데이터 추가 | stack.push("A"); |
pop() | 맨 위 데이터를 제거하고 반환 | String top = stack.pop(); |
peek() | 맨 위 데이터를 제거하지 않고 반환 | String top = stack.peek(); |
isEmpty() | 스택이 비었는지 확인 | boolean empty = stack.isEmpty(); |
search(Object o) | 특정 요소의 위치 반환 (1부터 시작) | int pos = stack.search("A"); |
Share article