DHistory

[Baekjoon] Greedy - 2885 초콜릿 식사 본문

Computer Science/Algorithm

[Baekjoon] Greedy - 2885 초콜릿 식사

ddu0422 2023. 8. 24. 17:36

문제

 

2885번: 초콜릿 식사

학교 근처 편의점에 새 초콜릿이 들어왔다. 이 초콜릿은 막대 모양이고, 각 막대는 정사각형 N개로 이루어져 있다. 초콜릿의 크기(정사각형의 개수)는 항상 2의 제곱 형태이다. 즉, 1, 2, 4, 8, 16, ...

www.acmicpc.net

 

풀이

"""
막대는 정사각형 N개
초콜릿의 크기는 항상 2의 제곱 형태 (1, 2, 4, 8, 16 ...)

K개 정사각형을 먹어야함.
나머지 초콜릿은 선영이를 준다.

항상 가운데로만 쪼개진다.
D개 있는 막대는 D/2개 막대 두 조각으로 쪼개진다.

K개 정사각형을 만들기 위해서 몇 번의 초콜릿을 쪼개야 하는지와 사야하는 가장 작은 초콜릿의 크기는?
"""
k = int(input())


def solution(k):
    binary = bin(k)[2:][::-1]
    # 2의 거듭제곱인 경우 쪼갤 필요가 없다.
    if binary.count('1') == 1:
        return [k, 0]
    
    return [2**len(binary), len(binary) - binary.find('1')]


print(*solution(k))

 

채점 결과