상세 컨텐츠

본문 제목

C# 프로그래머스 스택/큐 주식가격

프로그래밍/프로그래머스

by 개발자입니다 2021. 1. 13. 02:52

본문

728x90
반응형

프로그래머스 코딩테스트 연습


스택/큐 주식가격


문제 설명

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

제한사항
  • prices의 각 가격은 1 이상 10,000 이하인 자연수입니다.
  • prices의 길이는 2 이상 100,000 이하입니다.


큐(Queue) 이용


//프로그래머스 스택/큐 주식가격

using System;
using System.Collections.Generic;   //큐 라이브러리

public class Solution {
    public int[] solution(int[] prices) {
        //answer배열 선언과 크기 값 설정        
        int[] answer = new int[] {};
        answer = new int[prices.Length];
        
        //큐 변수 선언
        Queue<intqueue = new Queue<int>(prices);
        
        //초 단위로 기록된 주식가격이 담긴 배열 prices가 매개변수로 주어질 때, 
        //가격이 떨어지지 않은 기간은 몇 초인지를 return 하도록 solution 함수를 완성하세요.
        //즉, 들어온 가격이 초 단위로 언제까지 떨어지느냐를 확인하면 답이 나옴.
        for(int i=0i<prices.Lengthi++)
        {
            int time=0;                                         //시간
            int temp = queue.Dequeue();                         //현재 가격
            
            for(int j=i+1j<prices.Lengthj++)
            {
                time++;                                         //시간초 더하기
                
                //현재 가격과 각 배열의 가격 비교해 현재 가격이 더 크면 가격이 떨어졌음을 확인.
                //또는 j의 값이 가격 배열의 크기와 같으면 끝까지 떨어지지 않음을 확인.
                if(temp > prices[j] || j == prices.Length-1)    
                {
                    answer[i] = time;
                    break;    
                }
            }
        }
        return answer;
    }
}


배열 이용


//프로그래머스 스택/큐 주식가격
using System;

public class Solution {
    public int[] solution(int[] prices) {
        //answer배열 선언과 크기 값 설정
        int[] answer = new int[] {};
        answer = new int[prices.Length];
        
        //초 단위로 기록된 주식가격이 담긴 배열 prices가 매개변수로 주어질 때, 
        //가격이 떨어지지 않은 기간은 몇 초인지를 return 하도록 solution 함수를 완성하세요.
        //즉, 들어온 가격이 초 단위로 언제까지 떨어지느냐를 확인하면 답이 나옴.
        for(int i=0i<prices.Lengthi++)
        {
            int time=0;
            for(int j=i+1j<prices.Lengthj++)
            {
                time++;
                //현재가격이 비교하는 가격보다 높을 시 반복문 탈출.
                //즉, (현재) 3 > 2 (비교) 는 가격이 떨어졌음을 확인할 수 있음.
                if(prices[i]>prices[j]) break;  
            }
            answer[i] = time;
        }
        return answer;
    }
}


728x90
반응형

관련글 더보기

댓글 영역