[TIL]24-12-23

김슬아·2024년 12월 23일

오늘은 알고리즘 문제를 통해 0-1 bfs 알고리즘에 대해 배웠다.
가중치가 0,1 둘뿐인경우 최소 가중치 경로를 구하는 알고리즘 이라고 한다.

from collections import deque

N,K=map(int,input().split())

queue=deque()

visited=[False]*100001

queue.appendleft((N,0))
def bfs():
    while queue:
        vertex,time=queue.popleft()
        visited[vertex]=True
        if vertex == K:
            return time
        if 0 <= vertex * 2 <= 100000 and not visited[vertex * 2]:
            queue.appendleft((vertex * 2, time))
        if 0 <= vertex - 1 <= 100000 and not visited[vertex - 1]:
            queue.append((vertex - 1, time + 1))
        if 0 <= vertex + 1 <= 100000 and not visited[vertex + 1]:
            queue.append((vertex + 1, time + 1))

print(bfs())

오늘 강의를 한 번 슥 들었는데 이해가 조금 쉽지 않겠다는 느낌이 들었음,,!

i+1로 하면 39번째 연결되는 애는 40번 하나밖에 없지않나,,? 라는 의문이 들어서
gpt와 대화로 이해해보려고했다.

이전단계에서 연결되었기 때문에 모든점의 선 개수가 동일한것이라고 한다,,! 이해완

이건 오늘 강의에서 실습한 애니메이션되는 점, 선 움직임이다.

이중 포문을 이용해 점과 점을 선으로 잇고,
점과 점사이의 거리 x,y를 피타고라스 정리를 통해 구한다음 특정거리 이상으로 떨어지면 연결이 끊어지게 끔 구현을 했다.
강의를 따라 완성을 하면 흰 배경에 검은 점,선의 움직임을 표현할 수 있었다.
이렇게 끝내기엔 심심해서
뭔가 밤하늘의 별자리 같다고 느껴져서
배경의 색을 밤하늘색으로 바꾸고 점과 점이 연결될 때 bool 타입으로 체크를 해주어 true일 때 점이 노란색으로 빛나는 연출을 더해주었다.
추가적으로 별의 움직임에 가속도를 준다거나 움직임을 직선운동이 아닌 곡선(?) 운동으로 바꿔준다거나,, 고요한 사운드도 추가해보고 싶다.

profile
개발자/디자이너 둘다 잘하고싶은 코린이

0개의 댓글