728x90
코드 힌트
- 스택을 활용한 문제 해결:
- 스택은 LIFO(Last In, First Out) 방식으로 작동하므로, 최근에 추가된 요소를 쉽게 제거할 수 있습니다. "Z"는 최근에 추가된 숫자를 제거하라는 의미이므로, 스택을 사용하여 이를 간단히 처리할 수 있습니다.
- 숫자와 명령어 구분:
- 문자열을 공백으로 나눈 후, 각 단어가 숫자인지 "Z"인지 구분하여 처리합니다. "Z"는 스택에서 마지막 숫자를 제거하고, 숫자는 스택에 추가합니다.
- 배열을 활용한 간단한 접근:
- 배열을 사용하면 각 요소에 직접 접근하고 수정할 수 있으므로, "Z"가 있는 경우 간단히 이전 숫자를 "0"으로 변경하여 처리할 수 있습니다.
- 공백으로 분할 후 처리:
- 공백으로 문자열을 분할하여 각 요소를 배열로 변환한 후, "Z"에 따라 이전 요소를 변경하는 방법은 간단한 문자열 조작을 포함합니다.
정답은 더보기 클릭
더보기
Stack 정답
import java.util.*;
class Solution {
public int solution(String s) {
// 최종 결과를 저장할 변수 초기화
int result = 0;
// 숫자를 저장할 Stack 초기화
Stack<Integer> stack = new Stack<>();
// 문자열을 공백으로 분할하여 각 단어 처리
for (String str : s.split(" ")) {
if (str.equals("Z") && !stack.isEmpty()) {
// "Z"를 만나면 스택에서 마지막 요소 제거
stack.pop();
} else {
// 숫자를 스택에 추가
stack.push(Integer.parseInt(str));
}
}
// 스택에 남아 있는 모든 숫자를 합산하여 결과 계산
while (!stack.isEmpty()) {
result += stack.pop();
}
return result;
}
}
배열 정답
class Solution {
public int solution(String s) {
// 최종 결과를 저장할 변수 초기화
int result = 0;
// 문자열을 공백으로 분할하여 배열로 변환
String[] arr = s.split(" ");
// "Z"를 처리하여 이전 숫자를 0으로 대체
for (int i = 0; i < arr.length; i++) {
if (arr[i].equals("Z")) {
// "Z"를 만나면 이전 숫자를 0으로 변경
arr[i - 1] = "0";
arr[i] = "0";
}
}
// 배열의 모든 숫자를 합산하여 결과 계산
for (int i = 0; i < arr.length; i++) {
result += Integer.parseInt(arr[i]);
}
return result;
}
}
728x90
'프로그래머스(Java) > Level 0' 카테고리의 다른 글
[프로그래머스] 소인수분해 (0) | 2024.08.15 |
---|---|
[프로그래머스] 직사각형 넓이 구하기 (0) | 2024.08.15 |
[프로그래머스] 한 번만 등장한 문자 (0) | 2024.08.14 |
[프로그래머스] A로 B 만들기 (0) | 2024.08.14 |
[프로그래머스] 숨어있는 숫자의 덧셈 (2) (0) | 2024.08.14 |