프로그래머스
14. 프로그래머스_주식가격
UDUD
2019. 3. 26. 10:57
반응형
Using Language : Java
Using Tool : IntelliJ
- 프로그래머스 문제 소개
< 주식가격 >
문제 설명
초 단위로 기록된 주식가격이 담긴 배열 prices가 매개변수로 주어질 때, 가격이 떨어지지 않은 기간은 몇 초인지를 return 하도록 solution 함수를 완성하세요.
→ 문제 설명이 부족한 것 같아 아래 예시에 설명하였다.
제한 조건
- prices의 각 가격은 1 이상 10,000 이하인 자연수입니다.
- prices의 길이는 2 이상 100,000 이하입니다.
예시
prices return
[1, 2, 3, 2, 3] [4, 3, 1, 1, 0]
1을 기준으로 배열 끝까지 1보다 작은수는 나오지 않는다. 즉 주식가격이 떨어지지 않은것으로
2,3,2,3의 개수 총 4를 return배열에 입력
2를 기준으로 배열 끝까지 2보다 작은수는 나오지 않는다. 즉 주식가격이 떨어지지 않은것으로
3,2,3,의 개수 총 3을 return배열에 입력
3을 기준으로 바로 다음에 3보다 작은수인 2가 나온다. 주식 가격이 떨어진 것으로
1을 return배열에 입력
2를 기준으로 배열 끝까지 2보다 작은수는 나오지 않는다. 즉 주식가격이 떨어지지 않은것으로
총 1을 return배열에 입력
마지막 숫자인 3은 비교할 수가 없으므로 무조건 마지막은 0을 입력한다.
의사코드
- 이중 for문으로 기준값을 잡고, 그 다음부터 비교값을 비교해준다.
- 기준값이 비교값보다 클때까지 answer배열에 주식 가격이 얼마나 지속되는지 값을 대입하고 break로 탈출
- 비교값의 위치가 배열의 마지막일 경우에도 break로 탈출
<Solution17.java>
public class Solution17 {
public int[] solution(int[] prices) {
int[] answer = new int[prices.length];
for (int i = 0; i < prices.length - 1; i++) {
for (int j = i + 1; j < prices.length; j++) {
if (prices[i] > prices[j] || j == prices.length - 1) {
answer[i] = j - i;
break;
}
}
}
answer[prices.length - 1] = 0;
return answer;
}
}
<Solution17Test.java>
import static org.junit.Assert.assertArrayEquals;
import org.junit.Test;
public class Solution17Test {
@Test
public void 결과() {
Solution17 solution = new Solution17();
int[] prices= {1,2,3,2,3};
int[] answer= {4,3,1,1,0};
assertArrayEquals(answer, solution.solution(prices));
}
}
github에서 문제 확인하기
반응형