[백준 2885] 초콜릿 식사 (Silver 2)

DaeHoon·2023년 9월 26일
0

백준

목록 보기
21/21

문제

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

접근

  • 그리디 알고리즘으로 접근
  • 첫번째 답은 입력값보다 크면서 가장 작은 2의 배수가 정답
  • 두번째 답을 얻는 방법이 중요했는데, 첫번째 값을 기준으로 2씩 나누어주면서 입력 값이 나누어 떨어질 때까지의 연산 횟수를 구하면 된다. 즉 제수(divior)가 나머지를 남기지 않을 경우까지 반복문을 돌리면 된다.

Code

import sys

n = int(sys.stdin.readline())

choco = 1
while n > choco:
    choco *= 2

answer1= choco
answer2 = 0
while n % choco != 0 :
    choco = choco // 2
    answer2 += 1

print(answer1, answer2)

여담

구현은 간단한데 이런 수학적 문제는 실버라도 어렵다.

profile
평범한 백엔드 개발자

0개의 댓글