728x90
문제 설명
초 단위로 기록된 주식가격이 담긴 배열 prices가 매개변수로 주어질 때, 가격이 떨어지지 않은 기간은 몇 초인지를 return 하도록 solution 함수를 완성하세요.
제한사항
prices의 각 가격은 1 이상 10,000 이하인 자연수입니다.
prices의 길이는 2 이상 100,000 이하입니다.
입출력 예
prices | return |
[1, 2, 3, 2, 3] | [4, 3, 1, 1, 0] |
문제 해설
떨어지지 않은 기간이 몇 초 인지 계산하는 것 이 아니라, 해당 가격대에 도달했는지 여부를 물어보는 것 이다.
예를들어 첫번째 가격이 1 이라고 했을 때, 모든 가격을 통틀어서 1이 된적이 없음으로, 1은 모든 배열의 사이즈값에 자기자신을 뺸 값을 가진다.
두번째는 2인데, 자기자신 이후부터 자기자신 밑으로 떨어진적 이 없으니, 모든값을 계산해, 자기자신과 자신의 뒷값을 제외한 배열의 사이즈를 가진다.
세번째는 바로 다음값이 2로 떨어졌음으로, 3보다 더 낮은값이 2가 되었기 때문에, 1초간 유지되었다고 보아 1이 되는것이다.
네번째는 자기자신 이외에 이후 배열값이 한개 남았음으로, 비교연산이 한개라서 1이되고,
마지막은 이유불문 0이된다.
떨어지는 것의 정도를 각 값으로 연산하는것 이 아니라 각 값 위치당 연산으로 생각해야 한다.
아무리 읽어봐도 문제를 잘못출제 한것같음.
첫 번째 시도
#include <string>
#include <vector>
using namespace std;
vector<int> solution(vector<int> prices) {
vector<int> answer;
answer.resize(prices.size());
for(int i = 0; i < prices.size(); i++)
for(int j = i+1; j < prices.size(); j++) {
answer[i]++;
if(prices[i] > prices[j]) break;
}
return answer;
}
성공
스텍 큐 문제가 아니라 그냥 이중for문으로 돌려서 배열항목을 검사하고, 값을 중첩시키면 된다.
스텍큐를 사용하지 않아도 무방함.
효율성 테스트를 성공하였음으로 이게 정답임!
728x90
'코딩테스트 문제 풀이 > 스텍&큐' 카테고리의 다른 글
[2018 KAKAO BLIND RECRUITMENT 3차] n진수 게임 (0) | 2024.06.04 |
---|---|
다리를 지나는 트럭 (0) | 2024.02.14 |
프로세스 (0) | 2024.02.08 |
올바른 괄호 (0) | 2024.01.30 |
기능개발 (0) | 2024.01.19 |