[JAVA 문제 풀이] 183. 배열 만들기 6

프로그래머스 (181859)
Stupefyee's avatar
Apr 07, 2025
[JAVA 문제 풀이] 183. 배열 만들기 6
notion image
 

내가 작성한 코드

import java.util.*; class Solution { public int[] solution(int[] arr) { List<Integer> stk = new ArrayList<>(); // 정답을 담을 임시 리스트 for (int i = 0; i < arr.length; i++) { // 리스트가 비어있으면 추가 if(stk.isEmpty()) { stk.add(arr[i]); continue; } // 리스트가 비어있지 않으면 마지막 원소와 비교 후 추가 또는 삭제제 if(stk.get(stk.size() - 1) == arr[i]) { stk.remove(stk.size() - 1); } else { stk.add(arr[i]); } } // 리스트가 비어있으면 -1을 반환, 아니면 리스트를 배열로 변환하여 반환 return stk.isEmpty() ? new int[]{-1} : stk.stream().mapToInt(i -> i).toArray(); } }
 

다른 사람의 코드

import java.util.*; class Solution { public int[] solution(int[] arr) { Stack<Integer> stk = new Stack<>(); // 정답을 담을 스택 for (int i = 0; i < arr.length; i++) { if (stk.isEmpty()) { stk.push(arr[i]); // 스택이 비어 있으면 현재 값을 추가 continue; } if (stk.peek() == arr[i]) { // 스택의 최상단 값과 현재 값이 같으면 제거 stk.pop(); } else { stk.push(arr[i]); // 그렇지 않으면 값을 추가 } } // 스택이 비어 있으면 [-1] 반환, 아니면 배열로 변환 return stk.isEmpty() ? new int[]{-1} : stk.stream().mapToInt(i -> i).toArray(); } }
  • 내가 작성한 코드와 똑같지만 List대신 Stack을 사용
Share article

stupefyee