JSON.stringify,getElementsByClassName 구현하기
재귀함수를 통해 위 함수와 같은 기능을 하는 함수를 구현했다... 테스트 케이스를 통해 구현하는 문제였는데 케이스들은 다 통과했는데 의문점이 여전히 남아있다.
전달인자에 배열이나 객체가 들어왔을 때, 각각의 요소를 재귀하는데 요소의 타입이 number거나 boolean이어도 따옴표를 같이 출력하지 않았다.
또, return 할 때 따옴표나 [],{}에 따라 return의 형식이 바뀌는 모습을 볼 수 있었다.
(+)coplit의 문제도 이와 비슷한 문제인 듯
내일도 저 문제를 풀어보는 시간이 있으니깐 그 때 확인해 봐야 할 것 같다.
재귀함수
어제 확인을 위해서 질문한 내용이 맞다는 것을 확인하고 그 코드를 count를 추가시키는 재귀 함수를 돌릴때
function multiplicativePersistence(num,count = 0) {
//생략
if(num.length > 1){
count++;
//생략
multiplicativePersistence(b,count);
//count = multiplicativePersistence(b,count);이라고 해야함
}
return count;
}
이런식으로 했더니 첫번째만 count한 값인 1만 return 되는 것이었다... 그래서 어제와 다를게 없는 코드인데 결과가 달라서 약간 멘붕(?)이었는데 이유를 이해했다.
어제 재귀를 통해 전달한 것은 배열이었고 이는 call-by-reference이다. 함수를 선언할때 매개변수로 선언했던 값과 재귀를 돌렸을때 전달인자의 주소가 같지만,
위의 코드에서 count는 타입이 정수이기 때문에 call-by-value이며 이는 값을 주소가 아닌 값을 저장하는 것이기 때문에 다시 재귀가 돌았을 때, 새로운 주소에 값을 저장한다.
이 역시 확실한 정답이 필요해서 일단 help-desk에 질문을 올려놓은 상태이다.
시간복잡도
슬라이드 강의를 통해 시간 복잡도라는 개념을 공부했다.
아무래도 빅오는 학교에서 배웠던 개념이라 그런지 이해하는데 오랜 시간이 걸린지는 않았다...
코드의 시간 복잡도를 간결하게!