티스토리 뷰

알고리즘/백준

[백준] 16953. A -> B

빙빙 2021. 3. 27. 14:11

풀이

1. 무한루프 안에서 B가 짝수이면 B를 2로 나눈다. 동시에 cnt++

2. B를 10으로 나눴을 때 나머지가 1이라면 10으로 나눠준다. 동시에 cnt++

3. 만약 A == B이라면 cnt+1해주고 break걸어 cnt 출력

4. A > B라면 B는 연산을 통해 A가 될 수 없으므로 cnt = -1 후 break, cnt 출력

5. 위의 조건문이 충족하지 않으면 else를 줘서 cnt = -1값으로주고 break하게 했다.

 

이 문제는 처음에 보고 쉽다고 풀었는데 계속 틀렸다고 떠서 너무 짜증이 났다.

맞는데 계속 안돼서 알아낸 것이 else문을 줘야한다는 점이다!


A, B = map(int, input().split())
cnt = 0

while True:
    if A == B:
        cnt += 1
        break
    elif A > B:
        cnt = -1
        break
    if B % 2 == 0:
        B = B//2
        cnt += 1
    elif B % 10 == 1:
        B = B//10
        cnt += 1
    else:
        cnt = -1
        break

print(cnt)

'알고리즘 > 백준' 카테고리의 다른 글

[백준] 1969. DNA  (0) 2021.04.01
[백준] 12904 . A와 B  (0) 2021.03.28
[백준] 11399. ATM  (0) 2021.03.27
[백준] 17070. 파이프 옮기기 1  (0) 2021.03.16
[백준] 1074. Z  (0) 2021.03.07
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/12   »
1 2 3 4 5 6 7
8 9 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
글 보관함