본문 바로가기
백준

백준 / BOJ / 23351 / 물 주기

by 너츠너츠 2021. 11. 12.

문제

 

랑이 집사는 고양이들이 좋아한다는 캣닢을 직접 재배하려고 한다.

일직선으로 놓여진 N개의 화분에 캣닢이 하나씩 심어져 있다.

각 화분은 초기에 K만큼의 수분을 머금고 있고, 매일 아래와 같은 일이 순서대로 일어난다.

  1. 랑이 집사가 연속된 A개의 화분에 물을 준다. 이 때 물을 준 화분의 수분은 B만큼씩 증가한다.
  2. 모든 화분의 수분이 1씩 감소한다.
  3. 수분이 0이 된 화분에 있는 캣닢은 죽는다.

모든 캣닢이 살아 있는 기간이 최대한 길어지도록 물을 줄 때, 첫 캣닢이 죽는 날짜를 출력하는 프로그램을 작성하시오. 첫 날은 1일이다.

 

해설

이 문제는 어려울 것 없이 문제에서 주어진 순서대로 구현해내면 되는 문제입니다. 

import java.io.*;
import java.util.*;

public class Main {
    static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    static StringTokenizer st;
    static StringBuilder sb = new StringBuilder("");

    static int N, K, A, B, ans = 1;
    static int[] pots;

    static void input() throws IOException {
        st = new StringTokenizer(br.readLine());
        N = Integer.parseInt(st.nextToken());
        K = Integer.parseInt(st.nextToken());
        A = Integer.parseInt(st.nextToken());
        B = Integer.parseInt(st.nextToken());
        pots = new int[N];
        Arrays.fill(pots, K);
    }

    static void process(){
        int index = 0;
        while(true){
            for(int i=index; i<index+A; i++) pots[i%N] += B;
            for(int i=0; i<N; i++){
                if(--pots[i] == 0){
                    System.out.println(ans);
                    return;
                }
            }
            ans += 1;
            index = (index+A)%N;
        }
    }

    public static void main(String[] args) throws IOException{
        input();
        process();
    }
}

 

<링크>

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

반응형

'백준' 카테고리의 다른 글

백준 / BOJ / 1439 / 뒤집기  (0) 2021.11.19
백준 / BOJ / 2143 / 두 배열의 합  (0) 2021.11.13
백준 / BOJ / 3020 / 개똥벌레  (0) 2021.11.11
백준 / BOJ / 1707 / 이분 그래프  (0) 2021.11.10
백준 / BOJ / 10211 / Maximum Subarray  (0) 2021.11.08

댓글