알고리즘 문제/프로그래머스

[프로그래머스 - Java] 주식 가격

건복치 2021. 6. 10. 22:01
반응형

문제

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

 

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

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

programmers.co.kr

설명

스택 / 큐로 분류된 문제라 이걸 활용해야 하나 싶었는데 그냥 이중 for문으로 풀었다.

정확성, 효율성 시간초과 안나더라!

 

아무튼 현재 주식가격을 기준으로 그 이후의 주식 가격들을 순회하면서 시간을 + 1 해 나간다.

그러다 현재보다 작은 주식 가격을 만난다면 순회를 멈추면 된다.

이를 이중 for문으로 모든 주식 가격에 적용하면 된다!

전체 코드

처음에는 아래와 같이 코드를 짰는데 굳이 cnt변수로 카운트할 필요가 없이 answer[i]++ 해주면 됨

 

for(int i = 0; i < prices.length; i++) {
	int cnt = 0;
	for(int j = i+1; j < prices.length; j++) {
		if(prices[i] > prices[j]) {
			cnt++;
			break;
		} else {
			cnt++;
		}
	}
	answer[i] = cnt;
}

 

import java.util.*;

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;
	}
}

GITHUB

https://github.com/KwonMinha/Programmers/blob/master/Level2/src/StockPrice.java

 

KwonMinha/Programmers

Programmers Algoritm. Contribute to KwonMinha/Programmers development by creating an account on GitHub.

github.com

 

반응형