Search
Duplicate
😡

배열 만들기 6

대분류
코딩 기초트레이닝
비고
소분류
해결못함
리스트
확인
검토안함😴
문제
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 함수를 완성해 주세요.
단, 만약 빈 배열을 return 해야한다면 [-1]을 return 합니다.
풀이와 결과
package programmers.codingBasicTraining; import java.util.*; public class PROB120 { public static void main(String[] args) { int[] arr = {1,1,1,1,1,1,1,1}; System.out.println(Arrays.toString(solution(arr))); } public static int[] solution (int[] arr) { List<Integer> stk = new ArrayList<>(); int i = 0; while(i < arr.length) { if (stk.isEmpty()) { stk.add(arr[i]); i++; System.out.println(i + Arrays.toString(stk.toArray())); } else if (stk.get(stk.size() - 1) == arr[i]){ stk.remove(stk.get(stk.size() - 1)); i++; System.out.println(i + Arrays.toString(stk.toArray())); } else if (stk.get(stk.size() - 1) != arr[i]) { stk.add(arr[i]); i++; System.out.println(i + Arrays.toString(stk.toArray())); } } if (stk.isEmpty()) { return new int[]{-1}; } else { return stk.stream().mapToInt(v -> v).toArray(); } } }
Java
복사
테스트 1 〉 통과 (0.05ms, 67.6MB) 테스트 2 〉 통과 (1.98ms, 72.8MB) 테스트 3 〉 통과 (0.06ms, 76.4MB) 테스트 4 〉 실패 (3.09ms, 77.1MB) 테스트 5 〉 실패 (2.99ms, 75.4MB) 테스트 6 〉 통과 (1.88ms, 78.8MB) 테스트 7 〉 실패 (2.01ms, 73.1MB) 테스트 8 〉 실패 (5.99ms, 74.4MB) 테스트 9 〉 통과 (0.09ms, 67.6MB) 테스트 10 〉 실패 (2.74ms, 73.6MB) 테스트 11 〉 실패 (2.52ms, 79.3MB) 테스트 12 〉 실패 (6.80ms, 73MB) 테스트 13 〉 실패 (13.59ms, 82.1MB) 테스트 14 〉 실패 (6.46ms, 76.2MB) 테스트 15 〉 실패 (3.91ms, 74.4MB) 테스트 16 〉 실패 (23.36ms, 82.5MB) 테스트 17 〉 실패 (23.07ms, 80MB) 테스트 18 〉 실패 (43.55ms, 93.5MB) 테스트 19 〉 실패 (128.82ms, 133MB) 테스트 20 〉 실패 (25.67ms, 87.6MB)
Java
복사
..? 코드 실행 에서의 테케는 만족하는데 나머지는 불만족해서 테스트케이스 찾아내야 할듯,,