-
백준 16953번 : A → B - 파이썬 (python)알고리즘/그리디 2021. 3. 25. 20:34
* 아이디어
B에서 A로 가는 방법을 생각한다.
2 → 4 → 8 → 81 → 162 의 경우 162를 2로 나누었을 때 나머지가 0이다.
나머지가 0인 경우 b를 2로 나누고 그 값을 b에 저장하고 result += 1을 수행한다.
(문제에 따라 result의 초기값은 1)
81을 2로 나눈 경우 나머지는 1이다.
나머지가 1이면 81를 10으로 나눈 몫인 8을 b에 저장하고 result += 1을 수행한다.
8을 2로 나누면 나머지가 0이므로 8을 2로 나눈 값을 b에 저장하고 result += 1을 수행한다.
4 (= 8//2) 를 2로 나누면 나머지가 0이므로 b에 4를 2로 나눈 값을 저장하고 result += 1을 수행한다.
a와 b 값을 비교하여 같으면 반복문을 탈출하고 결과값을 찍는다.
현재 a 값은 2이고 b 값은 2 (= 4//2) 이므로 result 값인 5를 찍는다.
a, b = map(int, input().split()) result = 1 while True: # a와 b가 같은 경우 if a == b: break # a를 2로 나눈 나머지가 0이 아니고 10으로 나눈 나머지가 1이 아니거나, b가 a보다 작은 경우 elif (b % 2 != 0 and b % 10 != 1) or (b < a): result = -1 # -1 출력 break else: # 10으로 나누었을 때 나머지가 1인 경우 if b % 10 == 1: b = b // 10 result += 1 # 2로 나누었을 때 나머지가 0인 경우 else: b = b // 2 result += 1 print(result)
github.com/501501/baekjoon/blob/master/%EA%B7%B8%EB%A6%AC%EB%94%94/16953.py
'알고리즘 > 그리디' 카테고리의 다른 글
백준 2839번 : 설탕 배달 - 파이썬 (python) (0) 2021.03.30 백준 4889번 : 안정적인 문자열 - 파이썬 (python) (0) 2021.03.25 그리디 알고리즘 : 무지의 먹방 라이브 - 파이썬 (python) (0) 2021.03.23 그리디 알고리즘 : 볼링공 고르기 - 파이썬 (python) (0) 2021.03.20 그리디 알고리즘 : 만들 수 없는 금액 - 파이썬 (python) (0) 2021.03.20