본문 바로가기

알고리즘/그리디 알고리즘

[백준 31926번] 밤양갱 [JAVA]

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

 

 

 

1. 입력

첫 번째 줄에 민우의 머릿속에 떠오른 daldidalgo의 횟수 N이 주어진다. 

 

2. 출력

민우가 문제에 언급된 시행 중 하나를 선택하여 매초 시행했을 때, 𝑁번의 daldidalgo를 입력한 후 1번의 daldidan을 입력할 수 있는 최소 시간을 출력한다.

 

3.문제풀이

daldidalgo를 입력하는데는 daldi 까지 5 + dal(복사) 1 + go 2 해서 총 8이 걸립니다.

daldidan은 daldida 1 + n 1 해서 총 2가 걸립니다.

 

N = 2 인 경우 daldidalgo(8) + daldidalgo(복사 1) + daldidan(2) 해서 총 11이 걸립니다.

N = 3 인 경우 daldidalgo(8) + daldidalgo(복사 1) + daldidalgodaldida(복사 1) + n 1 해서 총 11이 걸립니다.

 

따라서 N>1 이라는 조건을 걸로 N/=2를 해서 count를 세고 난 후 10을 더해주면 됩니다.

 

 

4.소스코드

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

public class Main {


    static BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
    static BufferedWriter bw = new BufferedWriter(new OutputStreamWriter(System.out));
    static long N;
    public static void main(String[] args) throws IOException {
        N = Long.parseLong(br.readLine());
        int daldidalgo = 8;
        int daldidan = 2;
        int count = 0;
        while(N>1){
           N/=2;
           count++;
        }
        System.out.println(daldidalgo + count + daldidan);





    }



}

'알고리즘 > 그리디 알고리즘' 카테고리의 다른 글

[백준 1783번] 병든 나이트 [JAVA]  (0) 2024.06.11
[백준 1041번] 주사위 [JAVA]  (0) 2023.04.10