본문 바로가기

Algorithm/Greedy

(C++) - 백준(BOJ) 17521번 : Byte Coin

반응형

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

 

17521번: Byte Coin

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

www.acmicpc.net

greedy문제였습니다.

 

📕 풀이방법

📔 입력 및 초기화

n, w, coinNum, 일차원 배열 coinPrice를 long long형으로 선언합니다. 

 

📔 풀이과정

coinPrice[i] < coinPrice[i + 1] 이라면 i번째 날에서 매수, i+1번째 날에 매도하는 것이 무조건 이익을 취할 수 있는 방법입니다. i번째 산 코인의 개수를 coinNum에 저장한 뒤, i번쨰 날에 구입 후 남은 돈 w에서 i+1번째 coinNum만큼 판 가격을 w에 더해주면 됩니다.

 

📔 정답출력

보유현금 w를 출력해줍니다.


📕 Code

#include <bits/stdc++.h>
#define ll long long
using namespace std;
ll n, w, coinNum, coinPrice[100001];
int main(){
    cin >> n >> w;
    for(int i = 1; i <= n; i++) cin >> coinPrice[i];

    for(int i = 1; i <= n - 1; i++){
        if(coinPrice[i] < coinPrice[i+1]){
            coinNum = w / coinPrice[i];
            w %= coinPrice[i];
            w += coinPrice[i+1] * coinNum;
        }        
    }

    cout << w;
}