๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ
์•Œ๊ณ ๋ฆฌ์ฆ˜

[Java] BOJ 2869 ๋‹ฌํŒฝ์ด๋Š” ์˜ฌ๋ผ๊ฐ€๊ณ  ์‹ถ๋‹ค

by ๐ŸŠ๊ทค๐ŸŠ 2024. 7. 12.

๋ฌธ์ œ 

๋ฌธ์ œ ๋งํฌ https://www.acmicpc.net/problem/2869

  • ๋‹ฌํŒฝ์ด๋Š” ๋‚ฎ์— A๋ฏธํ„ฐ ์˜ฌ๋ผ๊ฐˆ ์ˆ˜ ์žˆ๋‹ค. ํ•˜์ง€๋งŒ, ๋ฐค์— ์ž ์„ ์ž๋Š” ๋™์•ˆ B๋ฏธํ„ฐ ๋ฏธ๋„๋Ÿฌ์ง„๋‹ค. ๋˜, ์ •์ƒ์— ์˜ฌ๋ผ๊ฐ„ ํ›„์—๋Š” ๋ฏธ๋„๋Ÿฌ์ง€์ง€ ์•Š๋Š”๋‹ค.
  • ๋‹ฌํŒฝ์ด๊ฐ€ ๋‚˜๋ฌด ๋ง‰๋Œ€๋ฅผ ๋ชจ๋‘ ์˜ฌ๋ผ๊ฐ€๋ ค๋ฉด, ๋ฉฐ์น ์ด ๊ฑธ๋ฆฌ๋Š”์ง€ ๊ตฌํ•˜๋Š” ํ”„๋กœ๊ทธ๋žจ์„ ์ž‘์„ฑํ•˜์‹œ์˜ค.
  • ์ฒซ์งธ ์ค„์— ์„ธ ์ •์ˆ˜ A, B, V๊ฐ€ ๊ณต๋ฐฑ์œผ๋กœ ๊ตฌ๋ถ„๋˜์–ด์„œ ์ฃผ์–ด์ง„๋‹ค. (1 ≤ B < A ≤ V ≤ 1,000,000,000)
  • ์ฒซ์งธ ์ค„์— ๋‹ฌํŒฝ์ด๊ฐ€ ๋‚˜๋ฌด ๋ง‰๋Œ€๋ฅผ ๋ชจ๋‘ ์˜ฌ๋ผ๊ฐ€๋Š”๋ฐ ๋ฉฐ์น ์ด ๊ฑธ๋ฆฌ๋Š”์ง€ ์ถœ๋ ฅํ•œ๋‹ค.

์•„์ด๋””์–ด

  • ํ•˜๋ฃจ๋Š” ๋ฌด์กฐ๊ฑด ์จ์•ผ๋˜๋ฏ€๋กœ ํ•˜๋ฃจ์— ์˜ฌ๋ผ๊ฐˆ ์ˆ˜ ์žˆ๋Š” ๊ธธ์ด๋งŒํผ ๋‚˜๋ฌด๊ธธ์ด๋ฅผ ๋นผ์ค€๋’ค, ๋‚ ์งœ๋ฅผ ์นด์šดํŠธํ•œ๋‹ค.
  • ๋‚จ์€ ๋‚˜๋ฌด ๊ธธ์ด๋ฅผ (ํ•˜๋ฃจ์— ์˜ฌ๋ผ๊ฐˆ ์ˆ˜ ์žˆ๋Š” ๊ธธ์ด - ํ•˜๋ฃจ์— ๋ฏธ๋„๋Ÿฌ์ง€๋Š” ๊ธธ์ด)๋กœ ๋‚˜๋ˆˆ๋‹ค.
  • ๋‚˜๋ˆˆ ๋‚˜๋จธ์ง€๊ฐ€ 0์ด๋ผ๋ฉด ๋ชซ๋งŒ ๋‚ ์งœ ์นด์šดํŠธ์— ๋”ํ•˜๊ณ , 0์ด ์•„๋‹ˆ๋ผ๋ฉด ํ•˜๋ฃจ๊ฐ€ ๋” ํ•„์š”ํ•˜๋ฏ€๋กœ ๋‚ ์งœ ์นด์šดํŠธ์— ๋ชซ๊ณผ 1์„ ๋”ํ•ด์ค€๋‹ค. 

๊ฒช์€ ์‹œํ–‰์ฐฉ์˜ค

  • ์ฒ˜์Œ์—๋Š” ์‚ฌ์‹ค while๋ฌธ์„ ์‚ฌ์šฉํ•ด์„œ ๋‚ ์งœ๋ฅผ ์นด์šดํŠธํ•ด์คฌ๋Š”๋ฐ ์‹œ๊ฐ„์ดˆ๊ณผ๊ฐ€ ๋‚ฌ๋‹ค... 
  • ๊ทธ๋ž˜์„œ ์‹œ๊ฐ„์„ ์ค„์ผ ์ˆ˜์žˆ๋Š” ์‹์„ ์ƒ๊ฐํ•˜๋‹ค๊ฐ€ ์‹์„ ์ƒ๊ฐํ•ด๋‚ด๊ฒŒ ๋˜์—ˆ๋‹ค. (์ค‘๊ฐ„์— ํ‹€๋ฆฌ๊ธฐ๋„ ๋งŽ์ด ํ‹€๋ ธ๋‹ค..ใ…Žใ…Ž)

๊ฒช์€ ์‹œํ–‰์ฐฉ์˜ค๋“ค... ใ…œใ…œ

 

์‹œ๊ฐ„์ดˆ๊ณผ๋ฅผ ํ•ญ์ƒ ์กฐ์‹ฌํ•˜์ž..!

์ฝ”๋“œ

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

public class BOJ2869 {

    public static void main(String[] args) throws Exception{
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        StringTokenizer st = new StringTokenizer(br.readLine());

        // ์˜ฌ๋ผ๊ฐ€๋Š” ๊ธธ์ด
        int up = Integer.parseInt(st.nextToken());
        // ๋‚ด๋ ค๊ฐ€๋Š” ๊ธธ์ด
        int down = Integer.parseInt(st.nextToken());
        // ๋‚˜๋ฌด ๊ธธ์ด
        int tree = Integer.parseInt(st.nextToken());

        // ๋‚ ์งœ ์นด์šดํŠธ
        int cnt = 1;
        // ๋‚จ์€ ๊ธธ์ด
        int len = 0;

        // ํ•˜๋ฃจ๋Š” ๋ฌด์กฐ๊ฑดํ•˜๋ฏ€๋กœ ๋‚˜๋ฌด๊ธธ์ด์—์„œ ํ•˜๋ฃจ์— ์˜ฌ๋ผ๊ฐ€๋Š” ๊ธธ์ด๋ฅผ ๋นผ์คŒ
        len = tree - up;

        // ๋‚จ์€ ๋‚˜๋ฌด ๊ธธ์ด๊ฐ€ ์žˆ๋‹ค๋ฉด
        if(len >= 0){
            // ๋‚จ์€ ๋‚˜๋ฌด ๊ธธ์ด๋ฅผ ํ•˜๋ฃจ์— ์˜ฌ๋ผ๊ฐˆ ์ˆ˜ ์žˆ๋Š” ๊ธธ์ด(์˜ฌ๋ผ๊ฐ€๋Š” ๊ธธ์ด - ๋‚ด๋ ค๊ฐ€๋Š” ๊ธธ์ด) ๋งŒํผ ๋‚˜๋ˆ”
            // ๋งŒ์•ฝ ๋‚˜๋จธ์ง€๊ฐ€ ์—†๋‹ค๋ฉด ํ•˜๋ฃจ์”ฉ ๋”ฑ ๋–จ์–ด์ง€๋ฏ€๋กœ ๊ทธ ๋ชซ๋งŒํผ ์นด์šดํŠธ์— ๋”ํ•ด์คŒ
            if(len % (up - down) == 0){
                len = len / (up - down);
            }
            // ๋งŒ์•ฝ ๋‚˜๋จธ์ง€๊ฐ€ ์žˆ๋‹ค๋ฉด ํ•˜๋ฃจ ๋” ์˜ฌ๋ผ๊ฐ€์•ผ๋˜๋ฏ€๋กœ ๋‚˜๋ˆˆ ๋ชซ์— + 1์„ ํ•ด์คŒ
            else{
                len = len / (up - down) + 1;
            }

            cnt = cnt + len;
        }

        System.out.println(cnt);
    }
}