본문 바로가기

컴퓨터 프로그래밍/알고리즘

프로그래머스-탑

https://programmers.co.kr/learn/courses/30/lessons/42588

 

코딩테스트 연습 - 탑

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

programmers.co.kr

<내풀이>

맨 끝의 요소 부터 차례로 바로 앞의 요소부터 대소를 비교해서 비교 대상보다 크면 그때 그 요소의 인덱스 값(+1)을 새로 생성한 배열의 요소 값으로 넣습니다. 

public class l8 {
    public static int[] solution(int[] heights) {
        int[] answer = new int[heights.length];
        answer[0]=0;
        for(int i = heights.length-1; i>0; i--) {
        	for(int j = i-1;j>=0;j--) {
        		if(heights[j]>heights[i]) {
        			answer[i]=j+1;
        			break;      			
        		}
        	}
        }
        return answer;
    }

	public static void main(String[] args) {
	//	int[] heights= {6,9,5,7,4};
		int[] heights= {3,9,9,3,5, 7, 2};
		for(int i: solution(heights))
		System.out.println(i);
	}
}