본문 바로가기
Problem Solving/Baekjoon

[백준] 17521 Byte Coin - Greedy / Java

by graycode 2023. 4. 10.

 문제 링크

 

17521번: Byte Coin

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

www.acmicpc.net

 

 풀이 과정

첫째날의 가격을 먼저 입력받고, 현재 날이 이전 날의 가격보다 높다면 매수하고 아니라면 매도한다.

출력 시점에 현재 남은 코인의 개수가 있다면 모두 매도해 보유금에 더해 출력한다.

 

 풀이 코드

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.StringTokenizer;

public class Main {

    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
        StringTokenizer st = new StringTokenizer(br.readLine());

        int n = Integer.parseInt(st.nextToken());
        long w = Integer.parseInt(st.nextToken());

        long cnt = 0;
        int prev = Integer.parseInt(br.readLine());

        while (n-- > 1) {
            int cur = Integer.parseInt(br.readLine());
            if (cur > prev) {
                cnt += w / prev;
                w %= prev;
            } else if (cur < prev) {
                w += prev * cnt;
                cnt = 0;
            }
            prev = cur;
        }

        bw.write(String.valueOf(w + prev * cnt));
        bw.flush();
    }

}

댓글