문제
https://www.acmicpc.net/problem/31926
학습 키워드
- 그리
풀이 및 코드
최초로 daldidalgo를 만드는데 필요한 시간은 8초이다.
- d
- da
- dal
- dald
- daldi
- daldidal (dal 복사-붙여넣기)
- daldidalg
- daldidalgo
그 다음에는 daldidalgo를 N - 1번 붙여넣기를 하는데 가능하면 daldida를 포함하여 붙여넣기를 해야 최소 시간이 나온다.
- N=2일 때,
- daldidalgo(8초)
- daldidalgodaldidalgo(9초. daldidalgo 복사-붙여넣기)
- daldidalgodaldidalgodaldida(10초. daldida 복사-붙여넣기)
- daldidalgodaldidalgodaldidan (11초. n 추가)
- N=3일 때,
- daldidalgo(8초)
- daldidalgodaldidalgo(9초. daldidalgo 복사-붙여넣기)
- daldidalgodaldidalgodaldidalgodaldida(10초. daldidalgodaldida 복사-붙여넣기)
- daldidalgodaldidalgodaldidalgodaldidan (11초. n 추가)
이걸 그림으로 표현하면 아래와 같이 나온다.
N=2 일 때는 8 + 1 + 2 = 11
N=3일 때는 8 + 1 + 2 = 11
N=4일 때는 8 + 2 + 2 = 12
.
.
.
N=8일 때는 8 + 3 + 2 = 13
즉, 처음 daldidalgo 와 마지막 daldidan을 제외한 사이의 개수는 N의 log2 값이 되므로 8 + log2(N) + 2를 하면 정답이 된다.
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int N = sc.nextInt();
System.out.println(8 + log2(N) + 2);
}
private static int log2(int n) {
return (int)(Math.log(n) / Math.log(2));
}
}
'알고리즘 > 백준' 카테고리의 다른 글
99클럽 코테 스터디 19일차 TIL (1374번: 강의실) (2) | 2024.11.15 |
---|---|
99클럽 코테 스터디 18일차 TIL (2212번: 센서) (2) | 2024.11.14 |
99클럽 코테 스터디 16일차 TIL (2847번: 게임을 만든 동준이) (2) | 2024.11.12 |
99클럽 코테 스터디 15일차 TIL (13417번: 카드 문자열) (1) | 2024.11.11 |
99클럽 코테 스터디 14일차 TIL (14916번: 거스름돈) (0) | 2024.11.11 |
댓글