본문 바로가기

Algorithm/Stack, Queue

[프로그래머스] 탑 [JAVA]

크게 어려운 문제는 아니였다. Stack에 대해 이해를 하고 있었다면 그리고 꼭 스택이 아니더라도 연결리스트나 다른 방법으로도 충분히 풀수 있긴는 하였으나 왼쪽으로 신호를 보낸다는 규칙으로 인해 스택으로 풀면 깔끔 해질 것 같아 스택을 사용하여 풀이를 진행하였다. 제일 마지막에 들어온 송신탑을 pop하여 왼쪽에 세팅 되어진 송신탑의 수신높이라 비교를 하고 송신이 가능하다면 +를 해주는 방식이다. 모두들 무난하게 다 풀었으리라 생각 해본다.

import java.util.Stack;
class Solution {
    public int[] solution(int[] heights) {
        Stack<Integer>stk=new Stack<>();
        int[] answer = new int[heights.length];
        for(int i=0;i<heights.length;i++) {
        	stk.push(heights[i]);
        	
        }
        while(!stk.isEmpty()) {
        	int tmp=stk.pop();
        	//System.out.println(stk.size());
        	
        	for(int i=stk.size();i>=0;i--) {
        		if(tmp<heights[i]) {
        			answer[stk.size()]=i+1;
        			break;
        		}
        	}
        	
        	
        }
        
		
		
		
        
        return answer;
    
    }
}