[백준 16953] A->B.py

🐥·2022년 1월 12일
0

백준

목록 보기
9/18

문제 이해하기

⦁ B가 2로 나눠지거나, 끝자리가 1일때로 분류하기

핵심

⦁ A가 B랑 같나?
⦁ B가 2로 나눠지나?
⦁ B의 끝자리가 1로 나누어 떨어지나?
⦁ A가 B보다 큰가?

소스코드

📍 첫번째 코드

A, B = map(int, input().split())
cnt = 1
while B != A:
    if (B > A):
        if (B % 2 == 0):
            B //= 2
        elif (B % 10 == 1):
            num = str(B)
            num = num[:-1] #[:-1] - 문자열에서 끝글자 자르기
            B = int(num)
        else:
            cnt = -1
            break
        cnt += 1
    if (B < A):
        cnt = -1
        break

print(cnt)

끝자리 1을 없앤 방법은
정수를 문자열로 변환한뒤 [:-1]을 써서 끝자리(__1)를 자른 뒤, 다시 문자열을 정수로 바꾸었다.

쓰면서 너무 찝찝했다.😑

그래서 다르게 없애보는 방법을 생각했다.

📍 두번째 코드

import sys
sys.setrecursionlimit(10 ** 7)

A, B = map(int, input().split())
cnt = 1
while B != A:
    if (B > A):
        if (B % 2 == 0):
            B //= 2
        elif (B % 10 == 1):
            B //= 10
        else:
            cnt = -1
            break
        cnt += 1
    if (B < A):
        cnt = -1
        break

print(cnt)

10으로 나눈 뒤 몫만 챙기는 것..!!!!!!
너무나 간단했다.

이렇게 했더니 코드길이가 확 짧아졌다.

profile
열심히 공부하자!!

0개의 댓글

관련 채용 정보