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 |