
Solution 1) 내 풀이
import java.util.Arrays;
import java.util.Stack;
class Solution {
public int[] solution(int[] arr) {
Stack<Integer> stk = new Stack<>();
for (int i = 0; i < arr.length; i++) {
if (stk.isEmpty()) {
stk.add(arr[i]);
} else if (!stk.isEmpty() && stk.peek() == arr[i]) {
stk.pop();
} else if (!stk.isEmpty() && stk.peek() != arr[i]) {
stk.push(arr[i]);
}
} if (stk.isEmpty()) {
return new int[] {-1};
} stk.stream().mapToInt(Integer::intValue).toArray();
}
}
코드 및 문제 리뷰
0과 1로만 이루어진 문자열 arr이 있다. 이를 이용해 새로운 배열 stk 을 만드려 한다.
이때의 조건으로
- stk 배열이 비어있다면 arr[i]의 요소를 추가 하고 i++;
- stk 배열이 비어있지 않고 마지막 요소가 arr[i]와 같다면 stk의 요소를 제거 한 뒤 i++;
- stk 배열이 비어있지 않고 마지막 요소가 arr[i]와 같지 않다면 stk에 요소를 추가 한 뒤 i++;
- stk 배열을 반환, 단 배열이 비어있다면 -1 요소가 담긴 배열을 반환
이렇게 주어져있다.
Stack 문제로 위의 조건 그대로만 구현해내면 되는 연습문제였다.
'연습문제 > 프로그래머스, 기초 트레이닝' 카테고리의 다른 글
| [프로그래머스 기초_java] 배열 비교하기 (0) | 2023.11.05 |
|---|---|
| [프로그래머스 기초_java] 무작위로 K개의 수 뽑기 (0) | 2023.11.04 |
| [프로그래머스 기초_java] 빈 배열에 추가, 삭제하기 (0) | 2023.11.04 |
| [프로그래머스 기초_java] 배열의 원소만큼 추가하기 (1) | 2023.11.04 |
| [프로그래머스 기초_java] 세 개의 구분 (1) | 2023.11.04 |