[실버 2] 백준 16953 - A → B (파이썬) 2025.05.07 18:18 Programming/백준 글 작성자: 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) 공유하기 게시글 관리 포렌식 & 개발 이야기 - Forensics & Development 저작자표시 비영리 '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 댓글 공유하기 다른 글 댓글 이 글 공유하기 구독하기 구독하기 카카오톡 카카오톡 라인 라인 트위터 트위터 Facebook Facebook 카카오스토리 카카오스토리 밴드 밴드 네이버 블로그 네이버 블로그 Pocket Pocket Evernote Evernote 다른 글 [실버 1] 백준 1697 - 숨바꼭질 (파이썬) [실버 1] 백준 1697 - 숨바꼭질 (파이썬) 12:12:16 [실버 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 다른 글 더 둘러보기