백준 31926번 밤양갱

김두현·2024년 7월 23일
1

백준

목록 보기
134/135
post-thumbnail
post-custom-banner

🔒문제 url

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


🪄전체 코드

#include <iostream>
#include <algorithm>

using namespace std;
#define IAMFAST ios_base::sync_with_stdio(false);cin.tie(0);
typedef long long ll;
typedef pair<int, int> pii;
typedef pair<long long, long long> pll;

int n;

void INPUT()
{
    IAMFAST
    cin >> n;
}

void solution()
{
    /**
     * n = 1 일 때,
     * (d)(a)(l)(d)(i)(dal)(g)(o) (daldida)(n) => 10
     * n = 2 일 때,
     * (daldidalgo) (daldidalgo) (daldida)(n) => 8 + 1 + 2 =  11
     * n = 3 일 때,
     * (daldidalgo) (daldidalgo) (daldidalgo daldida)(n) => 8 + 1 + 2 = 11
     * n = 4 일 때,
     * (daldidalgo) (daldidalgo) (daldidalgo)  (daldidalgo daldida)(n) => 8 + 1 + 1 + 2 = 12
     * n = 7 일 때,
     * (daldidalgo) (daldidalgo) (daldidalgo daldidalgo) (daldidalgo daldidalgo daldidalgo daldida)(n)
     * => 8 + 1 + 1 + 2 = 12
     * n = 8 일 때,
     * (daldidalgo) (daldidalgo) (daldidalgo daldidalgo) (daldidalgo) (daldidalgo daldidalgo daldidalgo daldida)(n)
     * => 8 + 1 + 1 + 1 + 2 = 13
     *
     * 위와 같은 규칙을 통해 2^k개의 daldidalgo가 있을 때,
     * (2^k + 1 ~ 2^(k+1) - 1)개의 daldidalgo 뒤에 (daldidalgo daldida)을 복사할 수 있음을 알 수 있다.
     *
     * 즉, 2^(k+1)개부터는 추가로 1개의 daldidalgo를 복사하는 작업이 추가되어야하므로,
     * 시간이 1 증가하게 된다.
     */
    int ans = 10;

    int cri = 1;
    while (n >= cri * 2)
    {
        ans++;
        cri *= 2;
    }
    cout << ans;
}

int main()
{
    INPUT();
    solution();
}

🥇문제 후기

GOLD5 미만 난이도는 알고리즘 및 풀이 설명을 주석으로 대체합니다.
주석을 참고해주세요.


💕오류 지적 및 피드백은 언제든 환영입니다. 복제시 출처 남겨주세요!💕
💕좋아요와 댓글은 큰 힘이 됩니다.💕
profile
I AM WHO I AM
post-custom-banner

0개의 댓글