티스토리 뷰
1. 문제
https://programmers.co.kr/learn/courses/30/lessons/42588
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
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