티스토리 뷰
1. 문제
https://programmers.co.kr/learn/courses/30/lessons/42588
2. 설명
stack 사용했다.
heights 배열을 뒤에서부터 순회하면서 신호 수신이 가능한 탑을 찾고 stack에 넣었다.
뒤에서부터 순회하기 때문에 stack 사용함.
찾으면 break, 수신 가능한 탑이 없으면 0을 push 했다.
3. 코드
import java.util.*;
class Solution {
public int[] solution(int[] heights) {
int[] answer = new int[heights.length];
Stack<Integer> stack = new Stack<>();
for(int i=heights.length-1; i>0; i--) {
for(int j=i-1; j>=0; j--) {
if(heights[i]<heights[j]) {
stack.push(j+1);
break;
}
else if(j==0)
stack.push(0);
}
}
stack.push(0); // 첫 번째 탑
for(int i=0; i<answer.length; i++)
answer[i] = stack.pop();
return answer;
}
}
'알고리즘 풀이 > 프로그래머스' 카테고리의 다른 글
프로그래머스 오픈채팅방 JAVA (0) | 2020.05.21 |
---|---|
프로그래머스 124 나라의 숫자 JAVA (0) | 2020.05.18 |
프로그래머스 기능개발 JAVA (0) | 2020.05.13 |
프로그래머스 주식가격 JAVA (0) | 2020.05.12 |
프로그래머스 [3차] 방금그곡 JAVA (0) | 2020.05.08 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday