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로 만들기
7(A), 8(연산 1), 9(연산 1), 18(연산 2), 19(연산 1), 38(연산 2), 76(연산 2), 77(연산 1)이 최소 연산이므로 정답은 7이다.
www.acmicpc.net
728x90
'Python > 백준' 카테고리의 다른 글
[Python] 백준 9498 시험성적 - 조건문(2) (0) | 2022.08.25 |
---|---|
[Python] 백준 1330 두 수 비교하기 - 조건문(1) (0) | 2022.08.24 |
[Python] 백준 25083 새싹 - 입출력과 사칙연산(15) (0) | 2022.08.21 |
[Python] 백준 10172 개 - 입출력과 사칙연산(14) (0) | 2022.08.21 |
[Python] 백준 10171 고양이 - 입출력과 사칙연산(13) (0) | 2022.08.21 |
댓글