[실버 2] 백준 16953 - A → B (파이썬)
글 작성자: pental

https://www.acmicpc.net/problem/16953
풀이
정수 A를 B로 만들기 위해 사용할 수 있는 연산은
- A → A * 2
- A → A * 10 + 1
최소한의 연산 횟수로 A를 B로 만들고 싶다. 만들 수 없다면 -1을 출력.
이 코드는 B에서 A로 거꾸로 줄여나가는 방식
왜냐하면 A에서 B로 모든 경우를 시도하면 탐색 공간이 매우 커질 수 있기 때문
주요 아이디어
- B를 줄여가면서 A가 될 수 있는지 확인한다.
- 가능한 줄이는 방법
- B % 10 == 1 → 끝자리가 1이면 B // 10
- B % 2 == 0 → 짝수면 B // 2
- 그 외에는 더 이상 줄일 수 없으므로 중단
코드
# 백준 16953 - A -> B # 분류 : 그래프 A, B = map(int, input().split()) count = 1 while B > A : if B % 10 == 1 : B //= 10 elif B % 2 == 0 : B //= 2 else : break count += 1 print(count if B == A else -1)
이 글은
(새창열림)
본 저작자 표시, 비영리 규칙 하에 배포할 수 있습니다. 자세한 내용은 Creative Commons 라이선스를 확인하세요.
Creative Commons
본 저작자 표시
비영리
'Programming > 백준' 카테고리의 다른 글
[실버 1] 백준 1697 - 숨바꼭질 (파이썬) (0) | 2025.05.08 |
---|---|
[실버 2] 백준 15666 - N과 M (12) (파이썬) (0) | 2025.05.07 |
[골드 1] 백준 2933 - 미네랄 (파이썬) (0) | 2025.05.07 |
[골드 5] 백준 1419 - 등차수열의 합 (파이썬) (0) | 2025.05.07 |
[실버 3] 백준 25418 - 정수 a를 k로 만들기 (파이썬) (0) | 2025.05.06 |
댓글
이 글 공유하기
다른 글
-
[실버 1] 백준 1697 - 숨바꼭질 (파이썬)
[실버 1] 백준 1697 - 숨바꼭질 (파이썬)
2025.05.08 -
[실버 2] 백준 15666 - N과 M (12) (파이썬)
[실버 2] 백준 15666 - N과 M (12) (파이썬)
2025.05.07 -
[골드 1] 백준 2933 - 미네랄 (파이썬)
[골드 1] 백준 2933 - 미네랄 (파이썬)
2025.05.07 -
[골드 5] 백준 1419 - 등차수열의 합 (파이썬)
[골드 5] 백준 1419 - 등차수열의 합 (파이썬)
2025.05.07
댓글을 사용할 수 없습니다.