[백준] 17521번 Byte Coin C++ 문제풀이

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

 

17521번: Byte Coin

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

www.acmicpc.net

문제 풀이

그래프가 위로 올라가다 꺾이는 지점(고점)에서는 팔고, 그래프가 내려가다 올라가는 지점(저점)에서는 구매하는 식으로 코들를 작성했다.

다음날의 코인 가격을 알 수 있기 때문에 쉽게 구현할 수 있었다.

소스 코드

#include <iostream>
using namespace std;

long long c_price[51] = { 0 };

int main() {
	long long n, W;
	cin >> n >> W;

	for (int i = 0; i < n; i++) {
		cin >> c_price[i];
	}

	long long coin_cnt = 0;
	for (int i = 0; i < n - 1; i++) {
		if (coin_cnt == 0) { 
			if (c_price[i] < c_price[i + 1]) {
				coin_cnt = W / c_price[i];
				W = W % c_price[i];
			}
			else {
				continue;
			}
		}
		else {
			if (c_price[i] > c_price[i + 1]) {
				W += coin_cnt * c_price[i];
				coin_cnt = 0;
			}
			else {
				continue;
			}
		}
	}

	W += coin_cnt * c_price[n - 1];
	cout << W << '\n';
}