-
알고리즘내일배움캠프/TIL 2022. 11. 30. 02:26
파이썬 리스트의 인덱스 확인방법
heap에서 delete를 할 때 자식노드들이 존재하는지 부터 체크하고 싶었습니다.
배열안에 인덱스 값이 없다는걸 확인해야 합니다
if node[right_child] :
if node[right_child] == True :
if bool(node[right_child]) == True :
를 시도해보았으나 원하는 기능을 만족하지 못했습니다.고민해본결과 len(node) > right_child 로 해결해보려 합니다.
이 방법이 옳은 방법인지 잘 모르겠으니 이따 튜터님에게 한번 여쭤봐야겠습니다.
이후로 강의를 더 보니 len을 사용하여 인덱스의 유무를 판단했습니다.
튜터님까지 가야하나 싶습니다. 그래도 더 좋은 방법이 있나 한 번 가봐야겠습니다.
더 좋은 방법을 알아내기보단 len의 방법 더 좋다라는 말씀을 듣고왔습니다.
거기에 자바스크립트와 제이쿼리에 대하여 궁금한것 좀 물어보고 왔습니다.자바스크립트 공부도 이제 곧 시작해야 합니다. 사실 지금 바로 해야하는게 맞지만
알고리즘 4주차까지만 끝내려고 했던 마음이 남아있어 빨리 끝내고 자바스크립트 공부를 해야겠습니다.
그러나 내일 sql특강을 듣기위해서 sql의 맛보기만 조금.. 알고리즘 강의를 들은 후에 듣고 자바스크립트를 시작할것입니다.새벽에는 깃 문서 1페이지씩이라도 꼭 읽고 자야겠습니다.
while bool(arr) : # true or false
while arr : # true or false
두 문장은 표현하려는게 같습니다.Dynamic Programming
피보나치수열을 재귀함수로 풀어낼때 인풋값이 크다면 결과값을 얻기까지 너무 오랜 시간이 걸립니다.
이 문제를 해결하기위해 재귀함수를 사용하지않고 반복문을 돌려서 값을 뽑아내면 되지않을까 생각을 해봤습니다.
바로 이어지는 강의에 동적계획법이라는걸 배웠습니다.
재귀함수의 코드의 간편함과, 값을 저장시켜 정말 간단하게 문제를 해결했습니다.
그럼에도 재귀함수를 사용하니 호출스택이 많이 쌓였다 줄었다 합니다.
이것이 크게 문제가 되는지 안되는지 잘 알지 못하지만,
재귀를 하지 않고 반복문을 돌린다면 몇개의 변수만을 가지고 값을 얻어낼 수 있을 것입니다.(아마두...)
top - down과 bottom - up이란게 있다며 궁금하면 찾아보라고 하는데.. 이름만 봐서는
피보나치수열의 재귀함수가 top-down이 아닐까 생각이 듭니다.
n-1 + n-2 .... return 1
그렇다면 재귀적으로 호출스택을 쌓지않으며 올라가는방식이 bottom - up 일거라 예상중입니다.
한번 재귀적으로 지금생각을 구현해보고 나서 top - down, bottom - up 이 무엇인지 검색해볼 생각입니다.구현을 해보긴 해봤는데.. 재귀와 반복문이 짬뽕이 된 느낌입니다. 이게 맞는건지 잘 모르겠지만.. 일단 검색을 해보고 잘 알아보겠습니다.
음... 비슷합니다 다만 제 코드는 재귀를 사용해서 n-1, n-2의 값을 가져와서 뭔가 낭비가 더 많은 것 같습니다.
그래도 개념은 같은 듯 합니다. 재귀를, 배열을, 아니면 변수만가지고도 해결이 됩니다.