본문 바로가기
Python/백준

[Python] 백준 25418 정수 a를 k로 만들기

by 푸_푸 2022. 8. 21.
728x90

백준 25418 정수 a를 k로 만들기

문제

입력으로 양의 정수 A와 K가 주어지면, 아래 연산을 이용하여 A를 K로 변경하려고 한다. 정수 A를 변경할 때 사용할 수 있는 연산 종류는 다음과 같다.

  • 연산 1: 정수 A에 1을 더한다.
  • 연산 2: 정수 A에 2를 곱한다.

정수 A를 정수 K로 만들기 위해 필요한 최소 연산 횟수를 출력하자.

입력

첫 번째 줄에 양의 정수 A K가 빈칸을 사이에 두고 순서대로 주어진다.
출력

첫 번째 줄에 양의 정수 A를 양의 정수 K로 만들기 위해 필요한 최소 연산 횟수를 출력한다.

제한

1 ≤ A < K ≤ 1,000,000


제출

a,k=map(int,input().split())
c=0
while k!=a:
    if k%2==0 and k/2>=a:
        k/=2 
    else:
        k-=1
    c+=1
print(c)

해설

A와 K를 a,k로 받아 A가 K가 아닐동안 실행하는 while문(A=K면 종료)

K를 2로 나눈 나머지가 0(K가 짝수)면서 K를 2로 나눈 수가 A보다 크거나 같을 때(K를 2로 나눈 수가 a보다 작으면 안됨)

K를 2로 나누고

그 외의 경우(K가 홀수이거나 2로 나눠버리면 A보다 작아져서 나눌 수 없는 경우)에는

K-1을 수행하여

if문이나 else문을 수행할 때마다 c(count)를 1씩 증가하여 c를 출력

예제

5 10

 

7 77

 

1111 997651

결과

백준 25418 정수 a를 k로 만들기

 

 

25418번: 정수 a를 k로 만들기

7(A), 8(연산 1), 9(연산 1), 18(연산 2), 19(연산 1), 38(연산 2), 76(연산 2), 77(연산 1)이 최소 연산이므로 정답은 7이다.

www.acmicpc.net

 

728x90

댓글