(BOJ) 16953. A->B

jmboy713·2023년 5월 2일
0

코딩테스트

목록 보기
19/27

📗문제 설명

문제 바로가기

❓ 정수 A를 B로 바꾸려고 한다. 가능한 연산은 다음과 같은 두 가지이다.

  • 2를 곱한다.
  • 1을 수의 가장 오른쪽에 추가한다.
    A를 B로 바꾸는데 필요한 연산의 최솟값을 구해보자.
  • 입력
    • 첫째 줄에 A, B (1 ≤ A < B ≤ 109)가 주어진다.
  • 출력
    • A를 B로 바꾸는데 필요한 연산의 최솟값에 1을 더한 값을 출력한다. 만들 수 없는 경우에는 -1을 출력한다.
# 입력
2 162
# 출력
5

24881162

💡문제 풀이 IDEA

  • B에서 시작해서 거꾸로 한다.

  • 짝수일 경우 2를 나눠준다.
  • 짝수가 아닐 경우, 끝의 자리가 1이면서 2자리 이상의 숫자라면
    • 자리수로 연산하기 위해 문자열로 바꾸고 끝의 자리를 뺀다.
  • 함수를 실행하면 count를 1 up 한다.
  • 같을때 반복문 탈출
  • 연산하다가 A보다 B가 작아지면 반복문을 멈춘다.
    • -1 출력

👨🏻‍💻문제 풀이 CODE

A,B=map(int,input().split())

count=1

while B!=A:
    if B%2==0:
        B=int(B/2)
        count+=1
    elif str(B)[-1]=='1' and len(str(B))>=2:
        B=str(B)
        B=B[:-1]
        B=int(B)
        count+=1
    else:
        count=-1
        break

print(count)
profile
Python을 활용한 프로그래밍을 하고있습니다! 데이터분석, 인공지능, Django에 관한 정보를 업로드할 예정입니다. 잘부탁드립니다!!

0개의 댓글