해당 게시글은 [Java] 어서와! 자료구조 알고리즘은 처음이지?https://programmers.co.kr/learn/courses/13577를 간략히 요약한 게시글이며 모든 출처는 해당강의에 있습니다.
주식가격이 나열된 배열이 주어지고 배열내에 존재하는 요소들의 인덱스를 비교하며 1개의 인덱스 = 1초로 가정하는 문제입니다. 헤당 요소가 몇 인덱스(초) 까지 같거나 높은값들만 나오는지 세알려 배열로 리턴해야 합니다.
처음부터 천천히 풀었으면 그리 어렵지 않은 문제였지만 뭔가 대단한 스택 또는 큐가 존재하거나 아니면 생각을 뒤집어 역순으로 풀어서 효율성 문제를 돌파해야한다는 생각이 괜히 어렵게 만들었던것 같습니다.
//주식 가격 순회
//시간, 가격 저장
//해당 요소의 다음 요소부터 마지막까지
//1초추가
//가격 떨어지면 멈춤
//유지된 시간 저장
import java.util.*;
class Solution {
public int[] solution(int[] prices) {
//하락하지 않은 시간을 저장하는 배열
int[] times = new int[prices.length];
//가격당 비교
for(int i=0;i<prices.length;i++){
int time = 0; //유지 시간
int price = prices[i]; //가격
//몇초 동안 유지되는지 비교
for(int j = i+1; j < prices.length;j++){
time++; //1초 추가
if(price > prices[j]) break; //하락시 멈춤
}
times[i] = time; //유지시간 저장
}
return times; //시간을 담은 배열 반환
}
}