TIL, 6주차 수요일

CUE·2021년 5월 12일
0

TIL

목록 보기
31/43
post-thumbnail

오늘 기상 시간은 7시반, 운동 시간은 2시간!

모닝 알고리즘

피보나치 수열에 대한 알고리즘을 풀었다.
어제 푼 피보나치 수열은 재귀함수를 사용하여 풀었는데, 이는 반복되는 계산으로 시간이 많이 소요되서 비효율(?)적인 코드라는 것을 알게되었다. 변수를 선언해 할당하여 각 수를 저장해서 시도해보았지만, 쉽게 되지 않았다.
40분 후, 레퍼런스 코드를 통해 배열의 장점을 다시 생각할 수 있었다. 배열데이터를 저장하고 인덱스를 통해 데이터를 다시 찾을 수 있는 좋은 것이다. 배열에 이전에 실행했던 피보나치 수열을 저장하고 인덱스로 접근한다면 시간을 단축시킬 수 있다 !

재귀함수

이어서 재귀함수를 학습했다.
생각해보면 재귀함수를 사용하는 것이 더 편하게 느껴진다. 특히, 다차원 배열을 이용해 반복문을 돌릴 때, 코드 고민은 한참했던 것 같은데 재귀함수를 사용한다면 보다 편하게 코드를 작성할 수 있다.

StringifyJSON

String타입으로 돌려주는 함수를 구현했다.
무조건 쌍따옴표 안에 들어가야하며, 문자열은 ""string""더블쌍따옴표가 나온다. 기초를 다지고 배열과 객체를 나누어서 조건문을 이용하여
string타입으로 출력할 수 있도록 함수를 구현하였다.
처음에 기초를 구현할 때는 쉽다고 느꼈다. 하지만, 배열과 객체를 문자열로 돌리면서 재귀함수를 사용하는 것에서 막혔다. 예상시간을 초과해서 문제를 풀었다.
왜 처음부터 sring을 조립해서 만든다는 생각을 하지 못했을까? 이렇게 생각하니 문제가 쉽게 풀렸다.!

Tree UI

DOM을 쓰면서 재귀함수로 트리 메뉴를 만드는 함수를 구현하였다.
HA 때, DOM문제를 풀지 못해 아쉬움이 남았는데, 오늘 이 문제를 통해서 DOM에 대한 이해가 더 높아지고, 재미있게 느껴졌다. 다행..
기초를 다지고 'ul'안에 재귀함수를 불러 계속 안에 넣어 트리를 만든다는 구조는 일찍 이해했다. 하지만, 역시 코드로 표현하는 것은 힘들었다. .children을 사용해 재귀를 해야한다는 것을 깨달았고, 열심히 파라미터를 넣어주었지만 자꾸 실패했다. 정말 답답했다.

문제를 계속 보다가 자식 노드를 가지고 있는 부모는 'group'이라는 타입을 가지고, 없으면 'item'이라는 타입을 가진다는 것을 발견하고 조건문을 걸어 해결할 수 있었다. 리뷰 시간에 풀이는 처음 생각한 .children을 사용하던데 내가 무슨 실수를 했나보다.. 주말에 리뷰 시간에 했던 레퍼런스 코드를 참고하면서 다시 풀어보고 연습해야겠다.

profile
archive

0개의 댓글