크게 어려운 문제는 아니였다. 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;
}
}
'Algorithm > Stack, Queue' 카테고리의 다른 글
[프로그래머스] 주식가격 [JAVA] (0) | 2019.11.22 |
---|---|
[프로그래머스] 다리를 지나는 트럭 문제[JAVA] (0) | 2019.11.20 |
[프로그래머스] 프린터 문제 [JAVA] (0) | 2019.11.19 |
[프로그래머스] 기능개발 문제[JAVA] (1) | 2019.11.18 |