https://school.programmers.co.kr/learn/courses/30/lessons/42584
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
이 문제는 지문을 파악하는게 어려웠다.
매 시점의 주식 가격을 비교한다는게 잘 이해가 안됐고, 초 세는 기준도 애매하다고 느꼈다.
초단위 주식 가격이 [1, 2, 3, 2, 3] 이라면 각 초의 주식 가격이 떨어지지 않은 기간은 아래와 같다.
1) 1초 시점 : 1 -> 2 -> 3 -> 2 -> 3까지 모두 비교했는데 1보다 떨어진 초가 없으니 총 4초
2) 2초 시점 : 2 -> 3 -> 2 -> 3까지 모두 비교했는데 2보다 떨어진 초가 없으니 총 3초
3) 3초 시점 : 3 -> 2로 1초만에 가격이 떨어졌으니 총 1초
(즉, 비교 후 가격 하락 여부와 관계없이 떨어지지 않은 기간을 +1초 해주어야 한다.)
4) 4초 시점 : 2 -> 3까지 모두 비교했는데 가격이 떨어지지 않았으니 총 1초 (???? 3번과 같다.)
5) 5초 시점 : 비교할 대상이 없으니 총 0초 (???)
이중 for문으로 풀면 된다고 생각해서 풀었더니 답은 맞았다.
package programmerstest.level2;
import java.util.Arrays;
public class StockPrice {
public static int[] solution(int[] prices) {
int len = prices.length;
int[] answer = new int[len];
for(int i = 0; i < len; i++) {
for(int j = i + 1; j < len; j++) {
answer[i]++;
if(prices[i] > prices[j]) {
break;
}
}
}
return answer;
}
public static void main(String[] args) {
int[] input1 = {1, 2, 3, 2, 3};
System.out.println(Arrays.toString(solution(input1)));
}
}
이 문제는 스택/큐로 분류되어있는 문제인데...
다른 사람 풀이를 찾아보니 스택으로 풀기도 한 것 같다.
이건 다음에 다시 풀어봐야겠다 ㅠㅠ
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 구명보트 - 탐욕법(Greedy) (1) | 2022.09.20 |
---|---|
[프로그래머스] 124 나라의 숫자 (0) | 2022.09.03 |
[프로그래머스] 최솟값 만들기 (0) | 2022.09.03 |