본문 바로가기
OLD_알고리즘/Programmers - 알고리즘

Programmers ] Level 2 - 주식가격

by 달승 2021. 3. 3.

 

아니... 문제 설명.. 불친절...

 

prices

1일 때, 2 3 2 3 으로 가격이 책정되어 있다. 따라서 처음 가격이 한 번도 떨어진 적 없으므로 4초간 떨어진 적이 없다.

2일 때, 3 2 3으로 마찬가지. 3초간 떨어진 적 없다.

3일 때, 2...로 가격이 떨어졌다. 1초 뒤에 떨어진 것이므로 1초간 떨어진 적 없다.

2일 때, 3으로 1초간 떨어진 적 없다.

그리고 마지막인 3일 때, 마지막 책정된 가격이므로 0초이다.

마지막 값은 default 0이라고 생각하고 풀면 편하다.

 

처음엔 위처럼 이해했다.

....그런데 테케는 맞고, 실제 채점은 다 틀렸다...

 

그래서 케이스를 생각해봤다.

 

만약 prices가 "3, 2, 1, 2"라면

prices

3일 때, 2 1으로 2초 뒤 가격이 떨어진다.

2일 때, 1으로 1초 뒤 가격이 떨어진다.

1일 때, 2로 1초간 가격이 떨어진 적 없다.

2일 때는 0이다.

 

2중 for문으로 풀면 될 것 같아서 stack/queue로 안 풀었다..ㅎ

 

더보기

처음 풀이

#include <string>
#include <vector>

using namespace std;

vector<int> solution(vector<int> prices) {
    vector<int> answer;
    int check = prices.size() - 1;
    
    for(int i = 0; i < prices.size(); i++){
        if(i != prices.size() - 1){
            if(prices[i] < prices[i + 1]) answer.push_back(check);
            else answer.push_back(prices[i] - prices[i + 1]);
        }else answer.push_back(0);
        check--;
    }
    return answer;
}

 

 

🌱 정답코드

 

댓글