13. [Java] 배열만들기4: stack → int[] 변환

https://school.programmers.co.kr/learn/courses/30/lessons/181918?language=java

1. 전체 코드

import java.util.*;

class Solution {
    public int[] solution(int[] arr) {
        Stack<Integer> stk = new Stack<>();
        int i = 0;
        
        while (i < arr.length) {
            if (stk.isEmpty()) {
                stk.push(arr[i]);
                i++;
            } else if (stk.peek() < arr[i]) {
                stk.push(arr[i]);
                i++;
            } else {
                stk.pop();
            }
        }
        
        // stack → int[]
        int[] answer = new int[stk.size()];
        for (int j = 0; j < stk.size(); j++) {
            answer[j] = stk.get(j);
        }
        return answer;
    }
}

2. for문 으로 stack → int[] 변환

// stack → int[]
int[] answer = new int[stk.size()];
for (int j = 0; j < stk.size(); j++) {
    answer[j] = stk.get(j);
}
return answer;

3. stream() 으로 stack → int[] 변환

// stream을 이용한 stack → int[] 변환
return stk.stream().mapToInt(Integer::intValue).toArray();

4. 속도 비교

테스트 케이스 크기

for-loop

stream

100개

약 0.01ms

약 0.01ms

100,000개

약 1.5ms

약 2.2ms

1,000,000개

약 15ms

약 22ms

차이 있음: 데이터가 클수록 stream()이 약간 느림
하지만 일반적인 코테에서는 이 정도 차이는 오답 판정으로 이어질 정도는 아님





Revision #3
Created 10 July 2025 01:13:35 by Dain
Updated 13 July 2025 14:28:26 by Dain