[Python] 백준/BOJ - 16953번: A -> B

2021. 11. 25. 17:43·Algorithm/Problem Solving
반응형

https://www.acmicpc.net/problem/16953

 

16953번: A → B

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

www.acmicpc.net

문제

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

2를 곱한다.

1을 수의 가장 오른쪽에 추가한다.

 

입력

첫째 줄에 A, B(1 <= A <= B <= 10^9)

 

출력

A를 B로 바꾸는데 필요한 연산의 최솟값에 1을 더한 값 출력. 만들 수 없는 경우 -1 출력.

 

예제 입력 1

2 1622

 

예제 출력 1

5

 

풀이

그리디 알고리즘을 이용해 풀었다. A -> B로 가는 것이 아닌 B를 A로 만드는 방식으로 해결했다.

 

a, b = map(int, input().split())

cnt = 0

while True:
    cnt += 1
    
    if a > b or (b % 10 != 1 and b % 2 != 0):
        cnt = -1
        break
    elif b % 2 == 0:
        b /= 2
    elif b % 2 == 1:
        b //= 10

    if a == b:
        cnt += 1
        break

print(cnt)

 

B가 일의 자리수가 1이 아닌 홀수인 경우에는 바로 -1을 리턴하면 된다.

B의 일의자리수가 1일 경우에는 1을 뺀 값을 B에 저장해주면 되고, B가 짝수일 경우에는 2로 나눠준 값을 B에 저장해주면 된다.

이 과정에서 B가 A보다 작아진다면 이는 B를 A로 만들 수 없다는 의미이기 때문에 -1을 리턴해주면 된다.

반응형

'Algorithm > Problem Solving' 카테고리의 다른 글

[Python] 백준/BOJ - 2847번: 게임을 만든 동준이  (0) 2021.11.26
[Python] 백준/BOJ - 1449번: 수리공 항승  (0) 2021.11.26
[Python] 백준/BOJ - 1789번: 수들의 합  (0) 2021.11.25
[Python] 백준/BOJ - 1931번: 회의실 배정  (0) 2021.11.17
[Python] 백준/BOJ - 1439번: 뒤집기  (0) 2021.11.17
'Algorithm/Problem Solving' 카테고리의 다른 글
  • [Python] 백준/BOJ - 2847번: 게임을 만든 동준이
  • [Python] 백준/BOJ - 1449번: 수리공 항승
  • [Python] 백준/BOJ - 1789번: 수들의 합
  • [Python] 백준/BOJ - 1931번: 회의실 배정
SH_Roh
SH_Roh
  • SH_Roh
    혼자공부끄적끄적
    SH_Roh
  • 전체
    오늘
    어제
    • 분류 전체보기 (159)
      • FE (39)
        • HTML, CSS (3)
        • Javascript (17)
        • React (11)
        • Next.js (4)
      • Network (1)
      • DevOps (4)
      • Git (1)
      • Trouble Shooting (24)
      • Algorithm (41)
        • Python (2)
        • Data Structure, Algorithm (7)
        • Problem Solving (31)
      • Education (23)
        • Elice AI Track (4)
        • Wanted Pre-Onboarding FE Co.. (19)
      • TIL (25)
      • Etc. (1)
        • 회고 (1)
        • 그냥저냥 (0)
  • 링크

    • Github
  • 인기 글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
SH_Roh
[Python] 백준/BOJ - 16953번: A -> B
상단으로

티스토리툴바