• 티스토리 홈
  • 프로필사진
    유니얼
  • 방명록
  • 공지사항
  • 태그
  • 블로그 관리
  • 글 작성
유니얼
  • 프로필사진
    유니얼
    • 분류 전체보기 (295)
      • Unity (17)
        • 게임 개발 (5)
      • Unreal (24)
        • 게임 개발 (20)
      • DirectX (36)
      • 코딩테스트 (91)
        • 프로그래머스 (25)
        • 백준 (66)
      • Google Workspace (1)
      • Programing (102)
        • C# (68)
        • C++ (24)
        • JavaScript (10)
      • 게임 서버 프로그래밍 (17)
      • Web (6)
        • 슈퍼코딩 (6)
  • 방문자 수
    • 전체:
    • 오늘:
    • 어제:
  • 최근 댓글
    등록된 댓글이 없습니다.
  • 최근 공지
    등록된 공지가 없습니다.
# Home
# 공지사항
#
# 태그
# 검색결과
# 방명록
  • [프로그래머스] 주식가격(C++)
    2024년 01월 20일
    • 유니얼
    • 작성자
    • 2024.01.20.:47
    728x90

    안녕하세요! 오늘은 코딩테스트 문제 중 하나인 "주식 가격" 문제를 해결하는 방법에 대해 설명하려고 합니다. 이 문제는 효율적인 데이터 구조와 알고리즘을 사용하여 주식 가격의 변동을 분석하는 데에 중점을 둡니다. 문제를 해결하는 과정과 코드를 자세히 알아보겠습니다.

    문제링크:

    https://school.programmers.co.kr/learn/courses/30/lessons/42584?language=cpp

     

    프로그래머스

    코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.

    programmers.co.kr

    Question

    문제 개요

    "주식 가격" 문제에서는 초 단위로 기록된 주식 가격 배열이 주어지며, 각 가격이 떨어지지 않은 기간을 초 단위로 계산하여 반환하는 것이 목표입니다. 이 문제는 효율적인 데이터 구조와 알고리즘을 사용하여 주식 가격의 변동을 분석하는 데에 중점을 둡니다.

    해결 방법

    이 문제를 해결하기 위해선 각 가격이 떨어지지 않는 시간을 효과적으로 계산할 수 있는 알고리즘을 구현해야 합니다. 이를 위해 큐(queue)를 사용하여 각 가격을 순차적으로 처리하고, 가격이 떨어질 때까지의 시간을 계산합니다.

    코드 구현

    #include <string>
    #include <vector>
    #include <bits/stdc++.h>
    using namespace std;
    
    vector<int> solution(vector<int> prices) {
        vector<int> answer;
        queue<int> q;
    
        // 주식 가격들을 큐에 삽입
        for(int i = 0; i < prices.size(); i++){
            q.push(prices[i]);
        }
    
        // 큐에 남아있는 주식 가격을 차례대로 처리
        while(q.size()){
            for(int i = 0; i < prices.size(); i++){
                int temp = q.front(); // 현재 가격
                q.pop(); // 큐에서 제거
                int sum = 0; // 가격이 떨어지지 않은 시간
                // 현재 가격 이후의 가격들을 확인
                if(i + 1 < prices.size()){
                    for(int j = i + 1; j < prices.size(); j++)
                    {
                        sum++;
                        if(temp > prices[j]) break; // 가격이 떨어진 경우 루프 종료
                    }          
                }
                answer.push_back(sum); // 결과에 추가
            }
        }
    
        return answer;
    }

    코드 설명

    이 코드는 주식 가격 배열 prices를 입력으로 받아, 각 가격이 떨어지지 않은 기간을 초 단위로 계산하여 반환합니다. 주식 가격은 큐에 저장되어 순차적으로 처리됩니다. 각 가격에 대해, 해당 가격 이후의 모든 가격을 순회하면서 가격이 떨어질 때까지의 시간을 계산합니다. 이 시간은 answer 벡터에 추가되어 최종적으로 반환됩니다.

    결론

    "주식 가격" 문제는 큐를 활용한 시간복잡도 효율적인 방법으로 해결할 수 있습니다. 각 주식 가격에 대해 가격이 떨어지지 않은 기간을 계산하고, 이를 순차적으로 분석하여 문제의 요구사항을 만족시키는 결과를 도출합니다. 이러한 접근 방식은 다른 시계열 데이터 분석 문제에도 적용될 수 있습니다.

    반응형
    다음글
    다음 글이 없습니다.
    이전글
    이전 글이 없습니다.
    댓글
조회된 결과가 없습니다.
스킨 업데이트 안내
현재 이용하고 계신 스킨의 버전보다 더 높은 최신 버전이 감지 되었습니다. 최신버전 스킨 파일을 다운로드 받을 수 있는 페이지로 이동하시겠습니까?
("아니오" 를 선택할 시 30일 동안 최신 버전이 감지되어도 모달 창이 표시되지 않습니다.)
목차
표시할 목차가 없습니다.
    • 안녕하세요
    • 감사해요
    • 잘있어요

    티스토리툴바