파이썬 알고리즘 193번 | [백준 5014번] 이진수게임- bfs

Yunny.Log ·2022년 7월 4일
0

Algorithm

목록 보기
196/318
post-thumbnail

193.이진수게임

1) 어떤 전략(알고리즘)으로 해결?

BFS

2) 코딩 설명

<내 풀이>



<내 틀렸던 풀이, 문제점>

from collections import deque
import sys
#11 이 들어오면 3으로 인식 
l = int(sys.stdin.readline(), 2) 
k = int(sys.stdin.readline(), 2)

# 보수는 해당 수의 - 붙인 것 
# 수에 1 더하기
# 수에 1 빼기 (0아닌 이상)

q=deque()
q.append((l, 0))

while q :
    now=q.pop()
    print(now, "nowwwwwwwwwwwwwwwwwwwwwww")
    if now[0]==k:print(now[1]);break

    else :
        # 1빼기 
        if now[0]!=0 : q.appendleft((now[0]-1, now[1]+1))

        #1더하기
        q.appendleft((now[0]+1, now[1]+1)) 
        
        # 한 자리 숫자 보수 구하기
        # => 숫자 반대로 바꾸고 1 더하고 맨 앞 숫자는 그대로 1
        if now[0]<10:
            #target = str(bin(now[0]))[2:] 
            print(now[0], bin(now[0])[2:], bin(~now[0])[3:])
            print(str(bin(~now[0])))
            target = int(str(bin(~now[0]))[3:] ,2)
            print("tt",target)
            q.appendleft((target+1, now[1]+1))

<반성 점>

  • 2의 보수 변경하는 게 대체 뭐냐;;

<배운 점>

0개의 댓글