코딩 테스트/[JAVA] programmers 코딩 테스트 연습
[Programmers/JAVA] 주식가격 / 프로그래머스 코딩 테스트 연습
M개발자
2022. 1. 4. 22:16
반응형
주식가격
문제 설명
초 단위로 기록된 주식가격이 담긴 배열 prices가 매개변수로 주어질 때, 가격이 떨어지지 않은 기간은 몇 초인지를 return 하도록 solution 함수를 완성하세요.
예시
prices | return |
[1, 2, 3, 2, 3] | [4, 3, 1, 1, 0] |
코드 해석 및 전체 코드
예시 입출력 설명
- 1초 시점의 ₩1은 끝까지 가격이 떨어지지 않았습니다.
- 2초 시점의 ₩2은 끝까지 가격이 떨어지지 않았습니다.
- 3초 시점의 ₩3은 1초뒤에 가격이 떨어집니다. 따라서 1초간 가격이 떨어지지 않은 것으로 봅니다.
- 4초 시점의 ₩2은 1초간 가격이 떨어지지 않았습니다.
- 5초 시점의 ₩3은 0초간 가격이 떨어지지 않았습니다.
1. 반환할 배열을 prices의 길이만큼 선언
2. 이중 for문을 반복하는데, 바깥쪽 for문은 prices의 길이만큼
3. 안쪽 for문은 i + 1 ~ prices의 길이만큼 반복
현재 초부터 다음 초의 값들을 비교하기에 i + 1부터 비교하게 된다.
4. answer[i]에 1 증가
예시 입출력 설명에서 3초 때, 1초간 가격이 떨어지지 않은 것으로 본다고 해
조건 비교하지 않고 바로 answer[i]에 1 증가시킨다.
5. prices[i]의 다음 요소들 중에서 작은 값을 만나면 안쪽 for문을 종료시킴
class Solution {
public int[] solution(int[] prices) {
int[] answer = new int[prices.length];
for (int i = 0; i < prices.length; i++) {
for (int j = i + 1; j < prices.length; j++) {
answer[i]++;
if (prices[i] > prices[j])
break;
}
}
return answer;
}
}
반응형