배열만들기4

이리·2025년 1월 22일
0
post-thumbnail

문제: https://school.programmers.co.kr/learn/courses/30/lessons/181918

문제설명

  • 주어진 파라미터: int[] arr
  • 반환값: int[]
  • arr → stk
  • 변수 i = 0 → i가 arr 길이보다 작으면 반복
    • stk 빈배열 → arr[i]를 stk에 추가 i에 1 더하기
    • stk 원소 O,
      • stk의 마지막 원소가 arr[i]보다 작으면 arr[i]를 stk뒤에 추가, i에 1 추가
      • stk의 마지막 원소가 arr[i]보다 크거나 같으면 stk 마지막 원소 stk에서 제거

풀이방식

  1. arr 길이 → 10^5
  2. 정해진 크기가 없어 ArrayList? → idx 변수로 리스트 크기 조절

코드

class Solution {
    public int[] solution(int[] arr) {
        int len = arr.length;
        int[] stk = new int[100000];
        int idx = 0; // 넣을 인덱스
        int i = 0;
        
        while(i < len){
            
            // stk 빈배열 -> arr[i]를 stk에 추가, i++
            if(idx == 0){
                stk[idx] = arr[i];
                i++;
                idx++;
            }else{
                if(stk[idx - 1] < arr[i]){
                    stk[idx] = arr[i];
                    i++;
                    idx++;
                }else{
                    idx--;
                }
            }
        }
        
        int[] answer = new int[idx];
        for(int j = 0; j < idx ; j++){
            answer[j] = stk[j];
        }
        
        return answer;
    }
}

참 쉽쥬잉~?

0개의 댓글

관련 채용 정보