[프로그래머스] 배열 만들기 4

Seah Lee·2023년 6월 26일
0

프로그래머스

목록 보기
32/57

import java.util.ArrayList;

class Solution {
    public ArrayList<Integer> solution(int[] arr) {
        ArrayList<Integer> stk = new ArrayList<>();
        int i = 0;
        
        while (i < arr.length) {
            if (stk.isEmpty()) {
                stk.add(arr[i]);
                i++;
            } else if (stk.get(stk.size() - 1) < arr[i]) {
                stk.add(arr[i]);
                i++;
            } else if (stk.get(stk.size() - 1) >= arr[i]) {
                stk.remove(stk.size() - 1);
            }
        }
        
        return stk;
    }
}

[처음에 좀 거지같이 풀던거]

import java.util.ArrayList;

class Solution {
    public ArrayList<Integer> solution(int[] arr) {
        ArrayList<Integer> stk = new ArrayList<Integer>();
        
        for (int i = 0; i < arr.length; i++) {
            if (stk.size() == 0) {
                stk.add(arr[i]);
            } else if (stk.get(stk.size() - 1) < arr[i]) {
                stk.add(arr[i]);
            } else if (stk.get(stk.size() - 1) >= arr[i]) {
                stk.remove(stk.size() - 1);
            }
        }
        
        return stk;
    }
}
  1. for문에 미쳐살지 않기
  2. ArrayList에서 값 가져올때는 .get() 이다.
  3. ArrayList에서 값 제거할때는 .remove() 이다.

[다른 사람의 풀이]
Stack을 사용해서 풀기 시작하는 사람들...
pop push 잘 활용하면 나도 잘 할 수 있을 것 같다..

import java.util.*;
class Solution {
    public int[] solution(int[] arr) {
        Stack<Integer> stack = new Stack();
        for(int i : arr ){
            if(stack.isEmpty()){
                stack.push(i);
                continue;
            }
            while(!stack.isEmpty() && i <= stack.peek()) {
                stack.pop();
            }
            stack.push(i);
        }
        int[] answer = new int[stack.size()];
        for(int i=0; i<answer.length; i++) {
            answer[answer.length - 1 - i] = stack.pop();
        }
        return answer;
    }
}
profile
성장하는 개발자

0개의 댓글