본문 바로가기

Algorithm/Practice

프로그래머스 - 스택, 큐_탑 (JAVA)

탑 높이가 중복되는 것이 없다고 가정하고 풀어서, 테스트 케이스 반만 통과되었다. 

탐색하면서 스택에 넣고, 나중에 출력했다.

import java.util.*; 
class Solution { 
    public int[] solution(int[] heights) { 
        int flag; 
        Stack s=new Stack(); 
        for(int i=heights.length-1;i>=0;i--){ 
            flag=i; 
            for(int j=i;j>=0;j--){ 
                 System.out.println(heights[i]+"-"+heights[j]); 
                if(heights[i]<heights[j]){ 
                    // 스택에 해당 수 없는지 확인 
                    if(s.search(heights[j])==-1){ 
                        s.push(j+1); 
                        System.out.println(heights[j]+"들어감"); 
                        break; 
                    } { 
                        System.out.println(heights[j]+"는 스택에 없음"); 
                    } 
                }else{ 
                     
                    flag--; 
                     
                    System.out.println("0들여보낼까"); 
                    if(heights[i]!=heights[j]&&flag==-1){ 
                        s.push(0); 
                        System.out.println("0들여보냄"); 
                    } 
                } 
             
                 
                 
                 
            } 
             
        } 
        // 마지막 수는 수신할 게 없네 
        s.push(0); 
        int n; 
        ArrayList al=new ArrayList(); 
        while(!s.isEmpty()){ 
             n=s.pop(); 
             System.out.println(n); 
             al.add(n); 
        } 
        int size=0; 
        int[] answer={}; 
        answer=new int[al.size()]; 
        for(int temp : al){ 

            answer[size++] = temp; 

        } 

         
        return answer; 
    } 
}