카테고리 없음

[Boj/백준] 16953 Python

ki7348 2021. 8. 29. 11:38

문제출처: https://www.acmicpc.net/problem/16953

 

16953번: A → B

첫째 줄에 A, B (1 ≤ A < B ≤ 109)가 주어진다.

www.acmicpc.net

 

 

1. 문제 접근 방식

B에서 A로 만들 생각을 했다. 그리디 문제처럼 풀어보려고 했고 m의 마지막 숫자가 1이면 1을 삭제하고 아니면 2로 나누는 방법을 사용했다.

 

 

2. 내가 푼 코드

import sys

n, m = map(int,sys.stdin.readline().split())

count=1


while True:
    if m == n:
        print(count)
        break
    if ( m % 2 != 0 and m %10 != 1)  or m < n:
        print(-1) 
        break
    if m % 10 == 1:
        m=m//10
        count+=1
    else:
        m=m//2
        count+=1

 

 

3. 결과 및 느낀점

숫자를 나누거나 곱하거나 하는 문제는 문자열로 풀지말고 숫자로 풀자. 처음에 문자열로 풀어서 실수했다...

그리고 조건을 항상 모두 추가하자.

달랑 m<n만 했다가 여러번 틀렸었다.