inblog logo
|
silver
    알고리즘문제풀기

    [알고리즘문제풀기] 배열 만들기 6

    silver's avatar
    silver
    Sep 29, 2025
    [알고리즘문제풀기] 배열 만들기 6
    Contents
    문제내가 작성한 정답다른 사람들의 정답

    문제

    school.programmers.co.kr
    https://school.programmers.co.kr/learn/courses/30/lessons/181859

    내가 작성한 정답

    import java.util.*; class Solution { public int[] solution(int[] arr) { ArrayList<Integer> answer = new ArrayList<>(); for(int i=0; i<arr.length; i++){ if(answer.isEmpty()){ answer.add(arr[i]); }else { if(answer.get(answer.size()-1) == arr[i]){ answer.remove(answer.size()-1); }else { answer.add(arr[i]); } } } return answer.isEmpty()?new int[]{-1}:answer.stream().mapToInt(i->i).toArray(); } }

    다른 사람들의 정답

    import java.util.Stack; class Solution { public int[] solution(int[] arr) { Stack<Integer> stack = new Stack<>(); // LIFO(Last In First Out) 구조의 스택 생성 for (int no : arr) { // 스택이 비어있지 않고, 현재 값이 스택의 최상단(마지막 저장 값)과 같다면 if (!stack.isEmpty() && no == stack.peek()) { stack.pop(); // 최상단 값을 제거 (같은 값이 겹치면 제거) } else { stack.push(no); // 다르면 스택에 값을 추가 (쌓기) } } // 스택이 비어있으면 [-1] 리턴, 아니면 스택 요소를 배열로 변환하여 리턴 return stack.isEmpty() ? new int[] { -1 } : stack.stream().mapToInt(i -> i).toArray(); } }
    개념
    설명
    스택(Stack)
    데이터를 한 쪽 끝에서만 넣거나(push), 꺼낼 수 있는 자료구조
    동작 원리
    후입선출(LIFO, Last In First Out) - 가장 나중에 들어간 데이터가 가장 먼저 나옴
    제공 클래스
    Java에서 java.util.Stack<E>클래스로 기본 제공
    push(E item)
    스택의 최상단에 요소를 추가
    pop()
    스택 최상단 요소를 꺼내고 제거
    peek()
    스택 최상단 요소를 제거지 않고 확인만 함
    isEmpty()
    스택이 비어있는지 여부 반환
     
    Share article

    silver

    RSS·Powered by Inblog