반응형
https://programmers.co.kr/learn/courses/30/lessons/42584
문제 풀이에서 제일 어려웠던 부분은
마지막 가격이 유지 안됬을 때의 예외 처리였습니다.
테스트 케이스를 돌리면 한 끗차리로 결과가 맞지 않았습니다.
이번에 풀면서 느낀 건 문제를 종이에 써가면 이해하려고 하니 조금 더 이해가 쉽게 되었다.
마치 손으로 디버깅 하듯이 문제를 풀어 나갈 수 있어서 좋았던거 같습니다.
앞으로 문제를 깊이 있게 이해하려는 노력을 해야겠습니다.
package com.ji.study;
import static org.junit.Assert.assertEquals;
import org.junit.jupiter.api.Test;
public class StockPriceTest {
@Test
void test() {
StockPrice test = new StockPrice();
assertEquals(new int[] { 4, 3, 1, 1, 0 }, test.solution(new int[] { 1, 2, 3, 2, 3 }));
assertEquals(new int[] { 2, 1, 1, 0 }, test.solution(new int[] { 498, 501, 470, 489 }));
}
}
public static int[] solution(int[] prices) {
int[] answer = new int[prices.length];
int count = 0;
for (int i = 0; i < prices.length - 1; i++) {
count = 0;
for (int j = i + 1; j < prices.length; j++) {
if (prices[i] <= prices[j]) {
count++;
} else {
// 반대의 경우 값 유지 했기 때문에 count
count++;
break;
}
}
answer[i] = count;
}
// 마지막 가격에 대한 상승/하강은 검사할 필요없음!!
answer[prices.length - 1] = 0;
return answer;
}
728x90
'[개발관련] > 코테준비' 카테고리의 다른 글
[프로그래머스] 프린터 (0) | 2021.05.07 |
---|---|
[백준] DFS와 BFS (0) | 2021.05.01 |
[프로그래머스] 타겟 넘버 (0) | 2021.04.25 |
[프로그래머스] 다리를 지나는 트럭 (0) | 2021.04.20 |
[프로그래머스] 소수 찾기 (0) | 2021.04.20 |