반응형

https://programmers.co.kr/learn/courses/30/lessons/42584

 

코딩테스트 연습 - 주식가격

초 단위로 기록된 주식가격이 담긴 배열 prices가 매개변수로 주어질 때, 가격이 떨어지지 않은 기간은 몇 초인지를 return 하도록 solution 함수를 완성하세요. 제한사항 prices의 각 가격은 1 이상 10,00

programmers.co.kr

문제 풀이에서 제일 어려웠던 부분은 

마지막 가격이 유지 안됬을 때의 예외 처리였습니다. 

테스트 케이스를 돌리면 한 끗차리로 결과가 맞지 않았습니다. 

이번에 풀면서 느낀 건 문제를 종이에 써가면 이해하려고 하니 조금 더 이해가 쉽게 되었다. 

마치 손으로 디버깅 하듯이 문제를 풀어 나갈 수 있어서 좋았던거 같습니다. 

앞으로 문제를 깊이 있게 이해하려는 노력을 해야겠습니다.

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

+ Recent posts