오늘은 알고리즘 공부를 하면서, 이론적인 부분이 많이 부족해서
강의를 들으면서 공부 했고, 여러가지 배운게 많다
우선 stack과 que가 뭔지는 알지만 이걸 어떻게 알고리즘에 적용해야 할지를 몰랐고
지금까지 이걸 적용해서 푼다는 생각을 하지 못했다.
오늘 한문제라도 사용해서 풀어보자라는 생각으로 달려들엇고
딱 한문제 풀엇다 ㅋㅋㅋㅋㅋㅋ
이 외에는 BFS, DFS에 대해서 좀 더 자세하게 알아가는 시간을 가졌다
아직 힙큐라는 것에 대해 어떻게 이렇게 돌아가는지 100프로 이해는 못했고,
힙은 모든 부모 노드가 자식보다 작거나 같은 값을 갖는 이진 트리입니다.
이 구현에서는 모든 k에 대해
heap[k] <= heap[2*k+1]과 heap[k] <= heap[2*k+2]인 배열을 사용합니다
부모 노드가 자식의 노드보다 작은수가 들어간다 정도로 이해를 했다
이 관련된 지식은 알고리즘을 풀면서 다시한번 공부 할 생각이다
import heapq
heq = []
heapq.heappush(heq, 4)
heapq.heappush(heq, 6)
heapq.heappush(heq, 1)
heapq.heappush(heq, 2)
보면 넣는 숫자에 따라 배열이 바뀌게 된다
O(n log n)의 시간복잡도를 가진다
덱이라고 읽더라고요, 디큐인줄 알았습니다
강의를 보다가 알게된 녀석인데, list와 사용하는게 거의 비슷하고,
Queue가 선입선출이라면, 이 녀석은 입구와 출구가 양쪽에 있다.
list와 같은 기능을 하는데, 사용하는 이유는 시간복잡도 때문이다.
오늘 배우고 deque를 이용해서 문제풀이를 진행
from collections import deque
skill = "BCD"
deq = deque(list(skill))
print(deq)
사용하게 되면 일반 리스트와는 다르게 deque( 리스트 ) 형식으로 되어있고,
사용하는 메서드는 list와 같습니다.
이걸 어디서 부터 시작해야 할까.. 고민은 많이 했엇지만
정작 시작점을 잡지 못해서 고민하던 중에
굉장히 좋은 글을 발견해서, 노션에 옮겨 붙이고
하나씩 공부 중이다
이런식으로 오늘 공부하고 노트필기를 했으면,
다음날 노션에 노트안보고 정리한뒤에 내가 필기했던 노트를 보면서 고칠 부분 고치면서,
페이지를 채워 나가고 있다
밑에 리스트가 굉장히 많은데
처음 리스트를 보고 내가 대답할 수 있겟다 싶엇던게
5~8가지? 정도 됬엇는데 지금은
한... 15개 정도?는 그래도 채울 수 있게 됫다
왠지 뿌듯하다 😁😁
기술면접 공부를 하다보니까, 힙, 스택등 아는 단어가 나오면
갑자기 머릿속에 그려지기 시작한다 ㅋㅋㅋㅋㅋ
하루종일 문제풀엇는데,,, 한문제라니
아쉽다
좀만 더 해보자