잔뜩 2025. 1. 17. 15:41

특정 조건일 때 i에 1을 더하라는 말이 없어서 i--; 처리를 안해줬더니 계속 틀렸음

import java.util.*;
class Solution {
    public int[] solution(int[] arr) {
  
        List<Integer>list = new ArrayList<>();
        
        for(int i =0; i<arr.length; i++){
            if(list.isEmpty()){
                list.add(arr[i]);
            } else if(!list.isEmpty()){
                if(list.get(list.size()-1)<arr[i]){
                    list.add(arr[i]);
                }else if(list.get(list.size()-1)>=arr[i]){
                    list.remove(list.size()-1);
                    i--;
                 }
             }
          }  //for믄
        int[] stk = new int [list.size()];
        for(int j =0; j<list.size();j++){
            stk[j] = list.get(j);
        }
        return stk;
    }//solution
} //class

사실 리스트에 값 추가, 제거 는 push,pop 스택을 아냐 모르냐 이지 않을까 싶음 

import java.util.*;

class Solution {
    public int[] solution(int[] arr) {
        Stack<Integer> stack = new Stack<>();

        for (int num : arr) {
            // 스택이 비어있거나, 마지막 값이 현재 값보다 작으면 추가
            while (!stack.isEmpty() && stack.peek() >= num) {
                stack.pop(); // 조건에 맞지 않으면 제거
            }
            stack.push(num); // 현재 값을 스택에 추가
        }

        // 결과를 배열로 변환
        int[] stk = new int[stack.size()];
        for (int i = 0; i < stack.size(); i++) {
            stk[i] = stack.get(i); // Stack을 배열로 변환
        }

        return stk;
    }
}
 

stack.peek()는 스택(Stack) 자료 구조에서 가장 최근에 추가된(스택의 맨 위에 있는) 요소를 반환하는 메서드입니다.

스택은 Last In, First Out (LIFO)

728x90