개발/CodingTest

프로그래머스 - 탑

Lumasca 2020. 6. 3. 12:44

이중 for는 맘에 안들지만 ..

스택을 어떻게 활용하는 걸까?

import java.util.*;
class Solution {
    public int[] solution(int[] heights) {
        
        int len = heights.length;
        int[] answer = new int[len];
        
        //레이저가 왼쪽으로 발사하니 오른쪽 탑부터..
        for(int i = len-1; i > 0 ; i--){
            boolean recv = false;
            
            for(int j=i-1; j>=0; j-- ){
                if(heights[i] < heights[j]){//현재 탑 높이보다 높으면 수신탑 기록
                    answer[i] = j+1;//탑번호는 1부터 시작하니 더해주고
                    recv = true;
                    break;
                }
            }
            if(!recv){
                answer[i] = 0;
            }
        }
        //System.out.println("result="+Arrays.toString(answer));
        return answer;
    }
}