Hayden's Archive

[알고리즘] 프로그래머스 : 탑 본문

Algorithm

[알고리즘] 프로그래머스 : 탑

_hayden 2020. 6. 18. 08:34

알고리즘 문제 출처 : https://programmers.co.kr/learn/courses/30/lessons/42588

 

코딩테스트 연습 - 탑

수평 직선에 탑 N대를 세웠습니다. 모든 탑의 꼭대기에는 신호를 송/수신하는 장치를 설치했습니다. 발사한 신호는 신호를 보낸 탑보다 높은 탑에서만 수신합니다. 또한, 한 번 수신된 신호는 다

programmers.co.kr

 

내가 작성한 코드

class Solution {
    public int[] solution(int[] heights) {
        int[] answer = new int[heights.length];
        int send = 0; 
        int receive = 0;
        for(int i=heights.length-1; i>=1; i--){
            if(heights[i]<heights[i-1]){ //송신 성공
                answer[i] = i;
            }else { //송신 실패
                send = i; //송신할 인덱스
                receive = i; //수신할 인덱스
                while(true) {
                    if(receive>0) { //배열 인덱스 범위 벗어나지 않도록 조건 지정
                        receive--;
                        if(heights[send]<heights[receive]) {
                            answer[send]=receive+1;
                            break;
                        }
                    }
                    else break;
                }
            }
        }
        return answer;
    }
}