0과 1로만 이루어진 정수 배열 arr가 주어집니다. arr를 이용해 새로운 배열 stk을 만드려고 합니다. i의 초기값을 0으로 설정하고 i가 arr의 길이보다 작으면 다음을 반복합니다. 만약 stk이 빈 배열이라면 arr[i]를 stk에 추가하고 i에 1을 더합니다. stk에 원소가 있고, stk의 마지막 원소가 arr[i]와 같으면 stk의 마지막 원소를 stk에서 제거하고 i에 1을 더합니다. stk에 원소가 있는데 stk의 마지막 원소가 arr[i]와 다르면 stk의 맨 마지막에 arr[i]를 추가하고 i에 1을 더합니다. 위 작업을 마친 후 만들어진 stk을 return 하는 solution 함수를 완성해 주세요.
import java.util.ArrayList;
class Solution {
public int[] solution(int[] arr) {
ArrayList<Integer> a = new ArrayList<>();
int i=0;
while (i < arr.length) {
if (a.size() == 0) {
a.add(arr[i]);
i++;
}
else if (a.size()>0 && a.get(a.size()-1)!=arr[i]){
a.add(arr[i]);
i++;
}else {
a.remove(a.size()-1);
i++;
}
}
if(a.size()==0){
int[] answer =new int[1];
answer[0]=-1;
return answer;
}
int[] answer = new int[a.size()];
for(int j=0; j<a.size(); j++){
answer[j]=a.get(j);
}
return answer;
}
}
저번에 풀은 배열 만들기 5에서 조금만 수정하면 금방 풀수 있다.
크거나 작을때 대신에 같거나 다를때로 if 문을 수정해주고 하면 되고 마지막에 배열이 빈값이였을때 따로
값을 반환해주면 된다.