https://programmers.co.kr/learn/courses/30/lessons/42588
문제를 읽어보고 스택 문제라는 감이 왔음
하지만 스택을 써서 비교할때 매 탑마다 pop을 해서 높이 비교를 하고 다음 탑에 넘어갈 때 push를 다시 해줘야 한다고 생각하여 반복문을 이용하여 구현함
// 탑
// 수평 직선에 탑 N대
// 모든 탑 꼭대기에 신호 송/수신 장치
// 송신 신호는 보낸 탑보다 더 높은 탑에서만 수신
// 한번 수신된 신호는 다른 탑으로 송신 안됨
// 신호 수신한 탑 기록 배열
class Solution {
public int[] solution(int[] heights) {
int[] answer = new int[heights.length];
// 수신한 탑 있는지 확인용도
boolean flag = false;
// 제일 오른쪽부터 왼쪽으로 신호 송신
// 첫 번재 탑은 무조건 0으로 기록
answer[0] = 0;
for(int i=heights.length-1; i>=1; i--){
flag = false;
// 송신 탑 높이보다 수신 탑 높이가 높으면 수신한 탑 위치 기록 아니면 다음으로 넘어감
for(int j=i-1; j>=0; j--){
if(heights[j] > heights[i]){
answer[i] = j+1;
flag = true;
break;
}
}
// 첫 번째 탑까지 수신한 탑이 없으면 0으로 기록
if(!flag)
answer[i] = 0;
}
return answer;
}
}
'Old > Algorithms' 카테고리의 다른 글
[JAVA] 프로그래머스: 위장 (코딩테스트 고득점 kit > 해쉬) (0) | 2020.07.13 |
---|---|
[JAVA] 프로그래머스: 전화번호 목록 (코딩테스트 고득점 kit > 해쉬) (0) | 2020.07.11 |
[JAVA] 프로그래머스: 완주하지 못한 선수 (코딩테스트 고득점 kit > 해쉬) (0) | 2020.07.11 |
[JAVA] 백준 9012번: 괄호 (0) | 2020.07.08 |
[JAVA] 백준 10828번: 스택 (0) | 2020.07.08 |