본문 바로가기
알고리즘

[알고리즘] c++ cpp java 주식가격

by keel_im 2020. 9. 23.
반응형

포인트

1. 이중 포문으로 오름차순을 찾을 수 있는가?
이 문제는 스택으로 풀 수 있다. -> 그 이유는 코드 중간에 저장을 하는 temp가 그런 역할을 하기 때문이다. 

2. 자바 버전 추가하였습니다. (자바로 바꾼다고 알고리즘이 바뀌진 않는다. 몇몇 syntax 만 주의를 하면 됩니다.

🧶문서는 항상 수정 될 수 있습니다. 비판은 환영합니다. 

반복문

#include <string>
#include <vector>

using namespace std;

vector<int> solution(vector<int> prices) {
    vector<int> answer;
    for(int i=0; i<prices.size(); i++){
        int cnt=0;
        int temp = prices[i];
        for(int j=i+1; j<prices.size();j++){
            cnt++;
            int cmp = prices[j];
            if(cmp < temp) break;
        }
        answer.push_back(cnt);
    }

    return answer;
}

 

스택 사용

#include <string>
#include <vector>
#include <stack>

using namespace std;

vector<int> solution (vector<int> prices) {
    vector<int> answer;
    stack<int> stack;
    for (int i=0; i < prices.size (); i++) {
        int cnt=0;
        stack.push (prices[i]);
        for (int j=i + 1; j < prices.size (); j++) {
            cnt+=1;
            if (prices[j] <stack.top()) break;
        }
        answer.push_back (cnt);
    }

    return answer;
}

JAVA

import java.util.Stack;

class Solution {
    public int[] solution(int[] prices) {
        int[] answer = new int[prices.length];
        Stack <Integer> stack = new Stack<>();
        for (int i = 0; i < prices.length; i++) {
            int cnt = 0;
            stack.push(prices[i]);
            for (int j = i + 1; j < prices.length; j++) {
                cnt += 1;
                if(prices[j]<stack.peek()) break;
            }
            answer[i] = cnt;
        }

        return answer;
    }
}
반응형

'알고리즘' 카테고리의 다른 글

[알고리즘] 기능 개발  (0) 2020.09.23
[알고리즘] 프린터  (0) 2020.09.23
[알고리즘] cpp 멀쩡한 사각형  (0) 2020.09.23
[알고리즘] cpp 파이프 옮기기  (0) 2020.09.20
[알고리즘] 아기상어  (0) 2020.09.20

댓글