Zayson
A to Zayson!
Zayson
์ „์ฒด ๋ฐฉ๋ฌธ์ž
์˜ค๋Š˜
์–ด์ œ
  • ๋ถ„๋ฅ˜ ์ „์ฒด๋ณด๊ธฐ (132)
    • Computer Science (20)
      • Network (4)
      • DB (12)
      • OS (4)
    • Algorithm (32)
      • ์™„์ „ํƒ์ƒ‰(Brute-Force) (3)
      • ๊ทธ๋ฆฌ๋””(Greedy) (6)
      • ํˆฌํฌ์ธํ„ฐ(Two-Pointer) (1)
      • ๊ทธ๋ž˜ํ”„(Graph) (5)
      • BFS & DFS (9)
      • ๊ตฌํ˜„, ์‹œ๋ฎฌ๋ ˆ์ด์…˜(Implementation) (5)
      • ๋‹ค์ด๋‚˜๋ฏน ํ”„๋กœ๊ทธ๋ž˜๋ฐ(DP) (3)
    • Backend (51)
      • Spring Boot (19)
      • JPA (16)
      • Kafka (2)
      • Java (13)
      • Kotlin (1)
    • DevOps (1)
      • Jenkins (5)
      • Oracle Cloud Infrastructure (1)
      • Kubernetes & Docker (1)
    • Trouble Shooting (3)
      • JPA (1)
      • Spring Boot (2)
    • ํšŒ๊ณ  (5)
      • ์—”๋นต ํ”„๋กœ์ ํŠธ ํฌ์ŠคํŠธ ๋กœ๋“œ๋งต (1)
      • 2022๋…„ (4)
    • Kafka (7)
      • Kafka (5)
      • Kafka Connect (2)
    • ๊ธฐ์ˆ  ์„œ์  (6)
      • ๋ฐ์ดํ„ฐ ์ค‘์‹ฌ ์• ํ”Œ๋ฆฌ์ผ€์ด์…˜ ์„ค๊ณ„ (3)
      • ๊ฐœ๋ฐœ์ž๊ฐ€ ๋ฐ˜๋“œ์‹œ ์ •๋ณตํ•ด์•ผํ•  ๊ฐ์ฒด ์ง€ํ–ฅ๊ณผ ๋””์ž์ธ ํŒจํ„ด (2)
      • ๊ฐ€์ƒ ๋ฉด์ ‘ ์‚ฌ๋ก€๋กœ ๋ฐฐ์šฐ๋Š” ๋Œ€๊ทœ๋ชจ ์‹œ์Šคํ…œ ์„ค๊ณ„ ๊ธฐ์ดˆ (1)

๋ธ”๋กœ๊ทธ ๋ฉ”๋‰ด

  • ํ™ˆ
  • ํƒœ๊ทธ
  • ๋ฐฉ๋ช…๋ก

์ธ๊ธฐ ๊ธ€

ํƒœ๊ทธ

  • Java
  • ๊ทธ๋ฆฌ๋””
  • ์™„์ „ํƒ์ƒ‰
  • kafka
  • ๋‚˜ ํ˜ผ์ž ์Šคํ”„๋ง๋ถ€ํŠธ!
  • CS
  • JPA
  • ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค
  • ๋ฐฑ์ค€
  • Kafka Connect
  • ์—”๋นตํ”„๋กœ์ ํŠธ
  • ๋ผ์ด๋ธŒ์Šคํ„ฐ๋””
  • dfs
  • Computer science
  • SpringBoot
  • spring boot
  • Backend
  • ๊ด€๊ณ„ํ˜• ๋ฐ์ดํ„ฐ๋ฒ ์ด์Šค ์‹ค์ „ ์ž…๋ฌธ
  • BFS
  • ๊ตฌํ˜„

์ตœ๊ทผ ๊ธ€

ํ‹ฐ์Šคํ† ๋ฆฌ

hELLO ยท Designed By ์ •์ƒ์šฐ.
Zayson

A to Zayson!

[๋ฐฑ์ค€, Java] 1052๋ฒˆ : ๋ฌผ๋ณ‘
Algorithm/๊ทธ๋ฆฌ๋””(Greedy)

[๋ฐฑ์ค€, Java] 1052๋ฒˆ : ๋ฌผ๋ณ‘

2022. 5. 17. 22:56

๐Ÿ”— ๋ฌธ์ œ ๋งํฌ

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

๐Ÿ˜ฎ ๋ฌธ์ œ ํ•ด๊ฒฐ ๋ฐฉ๋ฒ•

๋ฌธ์ œ์—์„œ ๊ฐ™์€ ์–‘์ด ๋“ค์–ด์žˆ๋Š” ๋ฌผ๋ณ‘๋ผ๋ฆฌ ํ•˜๋‚˜๋กœ ํ•ฉ์น  ์ˆ˜ ์žˆ๊ณ  ์ฒ˜์Œ์—๋Š” ๋ชจ๋“  ๋ฌผ๋ณ‘์—๋Š” ๋ฌผ์ด 1L๊ฐ€ ๋“ค์–ด์žˆ๋‹ค๊ณ  ์ œ์‹œ๋˜์–ด ์žˆ๋‹ค.

์ฒ˜์Œ๋ถ€ํ„ฐ ๋‘ ๊ฐœ์˜ ๋ฌผ๋ณ‘์„ ํ•œ ๊ฐœ์˜ ๋ณ‘์œผ๋กœ ํ•ฉ์ณ๊ฐ€๋ฉด, 2L → 4L → 8L ์ด๋Ÿฐ์‹์œผ๋กœ ์ฆ๊ฐ€ํ•  ์ˆ˜ ๋ฐ–์— ์—†๋‹ค.

์ด๋Š” ๋ฌผ๋ณ‘์ด 2์˜ ์ œ๊ณฑ ๊ฐ’์ด ๋˜์–ด์•ผ ๋ณ‘์ด ํ•˜๋‚˜๋กœ ํ•ฉ์ณ์ง€๋Š” ๊ฒƒ์„ ์•Œ ์ˆ˜ ์žˆ๋‹ค.

 

N๊ฐœ์˜ ๋ฌผ๋ณ‘์„ K๊ฐœ์˜ ๋ฌผ๋ณ‘์œผ๋กœ ํ•ฉ์น˜๋Š” ๊ฒฝ์šฐ ์ตœ์†Œ ๊ฐœ์ˆ˜์˜ ๋ฌผ๋ณ‘์„ ์‚ฌ๊ธฐ ์œ„ํ•ด์„  ๋‚จ์€ ๋ฌผ๋ณ‘(N) ๋ณด๋‹ค ์ž‘์œผ๋ฉด์„œ ๊ฐ€์žฅ ํฐ 2์˜ ์ œ๊ณฑ ๊ฐ’์„ ๋งค๋ฒˆ ๊ตฌํ•ด ๋นผ์ฃผ๋Š” ์ž‘์—…์„ K-1๋ฒˆ ํ•ด์ฃผ๊ณ ,

๊ทธ๋ž˜๋„ ๋ฌผ๋ณ‘์ด ๋‚จ์•„์žˆ๋‹ค๋ฉด ๋งˆ์ง€๋ง‰(K๋ฒˆ์งธ)์—๋Š” ๋‚จ์€ ๋ฌผ๋ณ‘์œผ๋กœ ํ•œ ๋ณ‘์„ ๋งŒ๋“ค์–ด์•ผ ํ•˜๋ฏ€๋กœ ๋‚จ์€ ๋ฌผ๋ณ‘๋ณด๋‹ค ํฌ๋ฉด์„œ ๊ฐ€์žฅ ์ž‘์€ 2์˜ ์ œ๊ณฑ๊ฐ’์„ ๊ตฌํ•ด ๋นผ์ฃผ๋ฉด ์‚ฌ์•ผํ•˜๋Š” ๋ฌผ๋ณ‘์ด๋‹ค.

 

์˜ˆ๋ฅผ ๋“ค์–ด N์ด 43 K๊ฐ€ 3์ด๋ผ๋ฉด , 32๊ฐœ๋กœ 1๋ณ‘์„ ๋งŒ๋“ค๊ณ , ๋‚จ์€ 11๊ฐœ์˜ ๋ฌผ๋ณ‘์—์„œ 8๊ฐœ๋กœ ๋˜ 1๋ณ‘์„ ๋งŒ๋“ ๋‹ค. (K-1๋ฒˆ ์ง„ํ–‰ = 2๋ฒˆ)

๊ทธ๋ฆฌ๊ณ  ๋‚จ์€ 3๋ณ‘์„ ํ•œ ๊ฐœ์˜ ๋ณ‘์œผ๋กœ ํ•ฉ์น˜๊ธฐ ์œ„ํ•ด์„  4๋ณ‘์œผ๋กœ ๋งŒ๋“ค์–ด ์ฃผ๋ฉด 1๋ณ‘์œผ๋กœ ๋งŒ๋“ค ์ˆ˜ ์žˆ๋‹ค. ๋”ฐ๋ผ์„œ 4-3์ธ 1๋ณ‘์„ ์ถ”๊ฐ€๋กœ ๊ตฌ๋งคํ•ด์ฃผ๋ฉด ๋œ๋‹ค. (๋‚จ์€ 1๋ฒˆ ์ง„ํ–‰)

 

๋งŒ์•ฝ K-1๋ฒˆ ๋งŒ๋“œ๋Š” ๋„์ค‘ ๋‚จ์€ ๋ฌผ๋ณ‘์˜ ๊ฐœ์ˆ˜๊ฐ€ ์—†๋Š” ๊ฒฝ์šฐ K๊ฐœ ๋‚ด์—์„œ ๋ชจ๋“  ๋ฌผ๋ณ‘์„ ํ•ฉ์น  ์ˆ˜ ์žˆ๋Š” ๊ฒฝ์šฐ์ด๋ฏ€๋กœ ์ถ”๊ฐ€๋กœ ๊ตฌ๋งคํ•˜์ง€ ์•Š์•„๋„ ๋˜๊ธฐ ๋•Œ๋ฌธ์— 0์„ ๋ฆฌํ„ดํ•œ๋‹ค.

 

  1. K-1๋ฒˆ ๋ฐ˜๋ณตํ•˜๋ฉด์„œ ๋‚จ์€ ๋ฌผ๋ณ‘๋ณด๋‹ค ์ž‘๊ณ  ๊ทธ ์ค‘ ๊ฐ€์žฅ ํฐ 2์˜ ์ œ๊ณฑ ๊ฐ’์„ ๊ตฌํ•ด ์ตœ๋Œ€ํ•œ ๋งŽ์€ ๋ฌผ๋ณ‘์„ ์ด์šฉํ•ด ํ•˜๋‚˜์˜ ๋ฌผ๋ณ‘์œผ๋กœ ๋งŒ๋“ ๋‹ค.
    • ๋งŒ์•ฝ K-1๋ฒˆ ๋ฐ˜๋ณตํ•˜๋ฉด์„œ ๋‚จ์€ ๋ฌผ๋ณ‘์ด 0๊ฐœ๋ผ๋ฉด ๋ชจ๋“  ๋ฌผ๋ณ‘์ด K๊ฐœ ์ด๋‚ด๋กœ ๋งŒ๋“ค์–ด์ง€๋Š” ๊ฒฝ์šฐ์ด๋ฏ€๋กœ ์ถ”๊ฐ€๊ตฌ๋งค๋ฅผ ํ•  ํ•„์š”๊ฐ€ ์—†๋‹ค. 0์„ ๋ฆฌํ„ดํ•œ๋‹ค.
  2. ๋ฌผ๋ณ‘์ด ๋‚จ์•„์žˆ๋Š” ๊ฒฝ์šฐ K-1๊ฐœ ๋ฌผ๋ณ‘์„ ๋งŒ๋“ค์—ˆ์œผ๋ฏ€๋กœ, ๋งˆ์ง€๋ง‰ ๋ฌผ๋ณ‘์€ ๋‚จ์€ ๋ฌผ๋ณ‘๋ณด๋‹ค ํฌ๋ฉด์„œ ๊ฐ€์žฅ ์ž‘์€ 2์˜ ์ œ๊ณฑ๊ฐ’์„ ๊ตฌํ•œ ๋’ค ๋‚จ์€ ๋ฌผ๋ณ‘์„ ๋นผ์ฃผ๋ฉด ๊ตฌ๋งคํ•ด์•ผ ํ•˜๋Š” ๋ฌผ๋ณ‘ ๊ฐœ์ˆ˜์ด๋‹ค.

๐Ÿšฉ Java ์ฝ”๋“œ

package com.algorithm.Baekjoon;

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

public class Main_1052_๋ฌผ๋ณ‘ {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

        StringTokenizer st = new StringTokenizer(br.readLine());
        int N = Integer.parseInt(st.nextToken());
        int K = Integer.parseInt(st.nextToken());

        int rst = buyBottle(N, K);
        System.out.println(rst);
        br.close();
    }

    private static int buyBottle(int n, int k) {
        /**
         * 1. K-1๋ฒˆ ๋Œ๋ฉด์„œ ๋‚จ์€ ๋ฌผ๋ณ‘ ๋ณด๋‹ค ์ž‘์€ 2์˜ base ์ œ๊ณฑ ๊ฐ’ ๋นผ์ฃผ๊ธฐ (์ตœ๋Œ€ํ•œ ๋งŽ์€ ๋ฌผ๋ณ‘์„ ์ด์šฉํ•ด ํ•˜๋‚˜๋กœ ๋งŒ๋“ค๊ธฐ)
         * 2. ๋งˆ์ง€๋ง‰์€ ํ•ด๋‹น ์ˆ˜๋ณด๋‹ค ํฐ 2์˜ base ์ œ๊ณฑ ๊ฐ’ ๊ตฌํ•ด์„œ ๋‚จ์€ ๋ฌผ๋ณ‘ ๋นผ์ฃผ๊ธฐ
         */
        if(n <= k) return 0;

        // 1. K-1๋ฒˆ ๋Œ๋ฉด์„œ ๋‚จ์€ ๋ฌผ๋ณ‘ ๋ณด๋‹ค ์ž‘์€ 2์˜ base ์ œ๊ณฑ ๊ฐ’ ๋นผ์ฃผ๊ธฐ (์ตœ๋Œ€ํ•œ ๋งŽ์€ ๋ฌผ๋ณ‘์„ ์ด์šฉํ•ด ํ•˜๋‚˜๋กœ ๋งŒ๋“ค๊ธฐ)
        for (int loop = 0; loop < k - 1; loop++) {
            int base = 0;
            while (Math.pow(2, base) < n) {
                base++;
            }
            n -= Math.pow(2, base - 1);

            // ๋‚จ์€ ๋ฌผ๋ณ‘์ด ์—†๋Š” ๊ฒฝ์šฐ ๋”์ด์ƒ ๋ฌผ๋ณ‘์„ ์‚ด ํ•„์š”๊ฐ€ ์—†์œผ๋ฏ€๋กœ return 0
            if(n == 0) return 0;
        }

        // 2. ๋งˆ์ง€๋ง‰์€ ํ•ด๋‹น ์ˆ˜๋ณด๋‹ค ํฐ 2์˜ base ์ œ๊ณฑ ๊ฐ’ ๊ตฌํ•ด์„œ ๋‚จ์€ ๋ฌผ๋ณ‘ ๋นผ์ฃผ๊ธฐ
        int base = 0;
        while (Math.pow(2, base) < n) {
            base++;
        }
        return (int) Math.pow(2, base) - n;
    }
}
๋ฐ˜์‘ํ˜•
์ €์ž‘์žํ‘œ์‹œ ๋น„์˜๋ฆฌ ๋ณ€๊ฒฝ๊ธˆ์ง€ (์ƒˆ์ฐฝ์—ด๋ฆผ)

'Algorithm > ๊ทธ๋ฆฌ๋””(Greedy)' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€

[๋ฐฑ์ค€, Java] 5186๋ฒˆ : ํŒŒํ‹ฐ๋ฅผ ์—ด์–ด๋ผ!!!  (0) 2022.07.06
[๋ฐฑ์ค€, Java] 10775๋ฒˆ : ๊ณตํ•ญ  (0) 2022.06.21
[ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค, Java] ๋‹จ์†์นด๋ฉ”๋ผ  (0) 2022.04.28
[ย ๋ฐฑ์ค€, Java] 1339๋ฒˆ : ๋‹จ์–ด ์ˆ˜ํ•™  (0) 2022.04.27
[๋ฐฑ์ค€, Java] 16120๋ฒˆ : PPAP  (0) 2022.04.26
    'Algorithm/๊ทธ๋ฆฌ๋””(Greedy)' ์นดํ…Œ๊ณ ๋ฆฌ์˜ ๋‹ค๋ฅธ ๊ธ€
    • [๋ฐฑ์ค€, Java] 5186๋ฒˆ : ํŒŒํ‹ฐ๋ฅผ ์—ด์–ด๋ผ!!!
    • [๋ฐฑ์ค€, Java] 10775๋ฒˆ : ๊ณตํ•ญ
    • [ํ”„๋กœ๊ทธ๋ž˜๋จธ์Šค, Java] ๋‹จ์†์นด๋ฉ”๋ผ
    • [ ๋ฐฑ์ค€, Java] 1339๋ฒˆ : ๋‹จ์–ด ์ˆ˜ํ•™
    Zayson
    Zayson
    ๊ณต๋ถ€ํ•œ ๋‚ด์šฉ์„ ์ •๋ฆฌํ•˜๋Š” ๊ณต๊ฐ„

    ํ‹ฐ์Šคํ† ๋ฆฌํˆด๋ฐ”