📂문제 설명
초 단위로 기록된 주식가격이 담긴 배열 prices가 매개변수로 주어질 때, 가격이 떨어지지 않은 기간은 몇 초인지를 return 하도록 solution 함수를 완성하세요.
제한사항
- prices의 각 가격은 1 이상 10,000 이하인 자연수입니다.
- prices의 길이는 2 이상 100,000 이하입니다.
입출력 예
pricesreturn
[1, 2, 3, 2, 3] | [4, 3, 1, 1, 0] |
입출력 예 설명
- 1초 시점의 ₩1은 끝까지 가격이 떨어지지 않았습니다.
- 2초 시점의 ₩2은 끝까지 가격이 떨어지지 않았습니다.
- 3초 시점의 ₩3은 1초뒤에 가격이 떨어집니다. 따라서 1초간 가격이 떨어지지 않은 것으로 봅니다.
- 4초 시점의 ₩2은 1초간 가격이 떨어지지 않았습니다.
- 5초 시점의 ₩3은 0초간 가격이 떨어지지 않았습니다.
※ 공지 - 2019년 2월 28일 지문이 리뉴얼되었습니다.
📂아이디어 및 알고리즘
- 스택/큐 문제 였지만 for문을 이용하여 해당 prices[i]를 순회할 때마다 그 다음for문인 prices[j]값과 비교하여 작아질때 j -i로 하여 얼마동안 가격이 떨어지지 않는지 구할 수 있다.
- 그리고 j == prices.length-1 의 조건으로 마지막 순번일 경우를 생각해 주었다.
📂소스 코드
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
class Solution {
public int[] solution(int[] prices) {
int[] answer = new int[prices.length];
int index=0;
for(int i=0;i<prices.length-1;i++) {
int count =0;
for(int j=i+1;j<prices.length;j++) {
if(prices[i] > prices[j] || j == prices.length-1) {
count = j - i;
break;
}
}
answer[index++] = count;
}
return answer;
}
}
|
cs |
📂코드 결과
📂후일담
비교적 쉬운 문제였고 Queue를 어떻게 사용할까 고민을 많이 하다가 그냥 직관적인 생각으로 풀었다.
다음번에 Queue로 해결하는 걸로 한 번 올려야겠다.!!💻💻
'알고리즘(Java) > programmers' 카테고리의 다른 글
[JAVA]다리를 지나는 트럭(코딩테스트 고득점 Kit[스택/큐]) - LEVEL2 (0) | 2020.08.20 |
---|---|
[JAVA] 기능 개발(코딩테스트 고득점 Kit[스택/큐]) - LEVEL2 (0) | 2020.08.20 |
[JAVA] 베스트 앨범(코딩테스트 고득점 Kit[해시]) - LEVEL3 (0) | 2020.08.13 |
[JAVA] 위장(코딩테스트 고득점 Kit[해시]) - LEVEL2 (0) | 2020.08.13 |
[JAVA] 전화번호 목록(코딩테스트 고득점 Kit[해시]) - LEVEL1 (0) | 2020.08.13 |