🧑💻 [Python] 백준 25418 정수 a를 k로 만들기
Silver 3 - 그리디
A에서 K를 찾는 것이 아닌, K에서 A를 찾는 것이 제일 쉽다
제일 큰 수에서, 짝수이면 2를 나누고, 홀수이면 1을 빼준다
- 단 짝수에서 2를 나눴을 때에 항상 A보다 커야 한다
문제풀이
- K를 A로 만들어야 하고, 2로 최대한 많이 나누어야지, 최소로 연산을 할 수 있다
- while 문을 통해 K가 A가 될때까지 순회를 한다
- K가 짝수이거나, 2로 나누었을 때 A보다 커야지만 2로 나눌 수 있다
- 그게 아니고, 홀수이거나 K를 2로 나누었는데, A보다 작으면 계속 1로 빼준
코드
end, start = map(int, input().split())
count = 0
while start != end:
if start % 2 == 0 and start // 2 >= end:
start //= 2
count += 1
else:
start -= 1
count += 1
print(count)
'알고리즘 > 그리디' 카테고리의 다른 글
[Python] 백준 1083 소트 (0) | 2023.02.01 |
---|---|
[Python] 백준 12931 두 배 더하기 (1) | 2023.02.01 |
[Python] 백준 2212 센서 feat. Shark_상어 (2) | 2023.01.29 |
[Python] 백준 1783 병든 나이트 (0) | 2023.01.29 |
[Python] 백준 1026 보물 (0) | 2023.01.27 |