https://www.acmicpc.net/problem/17521

 

17521번: Byte Coin

입력은 표준입력을 사용한다. 첫 번째 줄에 요일 수를 나타내는 양의 정수 n과 초기 현금 W(1 ≤ n ≤ 15, 1 ≤ W ≤ 100,000)가 주어진다. 다음 n 개의 줄에서, i번째 줄은 i일의 바이트 코인 가격을 나

www.acmicpc.net

 

문제 풀이

코인의 그래프를 알고 있을 때, 최대 이익을 내면 되는 문제이다.

 - 코인이 저점일 때 풀매수를 때리면 된다.

 - 코인이 고점일 때 풀매도를 하면 된다.

 

1. 현재와 다음 그래프를 비교하여 다음 그래프에서 상향이 되면 그때가 저점이므로 풀매수

2. 다음 그래프가 하향이면 현재가 고점이므로 풀매도

using System;
using System.Collections.Generic;
using System.Text;

namespace Baekjoon.silver
{
    class _17521
    {
        static void Main(string[] args)
        {
            int[] n = Array.ConvertAll(Console.ReadLine().Split(), int.Parse);
            long money = n[1];
            long coin = 0;
            int[] bit = new int[n[0]];
            for (int i = 0; i < n[0]; i++)
                bit[i] = int.Parse(Console.ReadLine());

            int gojum = 0;
            for(int i = 0; i < n[0] - 1; i++)
            {
                if (bit[i] < bit[i + 1])
                {
                    gojum = i + 1;
                    coin += money / bit[i];
                    money = money % bit[i];
                }
                else if (bit[i] > bit[i + 1])
                {
                    money += coin * bit[gojum];
                    coin = 0;
                }
            }
            Console.WriteLine(coin * bit[gojum] + money);
        }
    }
}

+ Recent posts