본문 바로가기
Development

[19.11.26] TIL, pre course 과제 완료.

by igy95 2024. 1. 6.

 

 

마지막 recursion 과제를 남겨두고 정말 머리를 오래도록 싸맸던 것 같다.

분명 무엇을 이용해서 풀어야할지도 알겠고, 감도 잡히는데 미치도록 풀리지 않았다.

고생도 많았지만 그렇기에 머리에 더 남을 것이라 희망하며 복습을 시작하겠다.

 

getElementsByClassName 함수.

recursion 과제의 핵심은 '재귀함수'를 이해하느냐, 가 관건이라고 할 수 있다.

그 개념을 간단히 서술해 보자면 함수 안에 같은 함수를 사용하여 일종의 loop을 만들어주고, 정해진 조건을 충족하면 결과를 도출해낼 수 있는 함수를 만드는 것이었다. 여기서 주의할 점은 반드시 탈출구(!)를 만들어주어 무한루프를 방지할 수 있어야 한다는 점이다.

 

비슷한 방식으로 for반복문을 사용할 수도 있지만,

내용의 가독성과 운용의 효율성을 위하여 여러가지 방면(특히 함수 프로그래밍)을 고려해볼 수도 있겠다. 

 

getElementsByClassName(이하 클래스 함수)의 지향점은, DOM 내에서 HTML의 원소를 불러올 수 있는 여러 메소드 중에 '클래스명을 입력하면 해당 클래스가 포함된 원소의 배열을 만드는' document.getElementsByClass()의 기능을 정확히 구현하기 위한 함수를 작성하는 것에 치중되어 있다.

 

셀프 코드리뷰를 해보자면, 나의 의도는 주어진 메소드들을 모두 사용하여 근접한 결과에 도달하는 것이었다.

(document.body / .classList / .childNodes)

 

1. class 명은 <body>태그 자체와 childNodes를 통해 탐색해야 한다.

2. 동일한 class명을 가진 모든 태그를 배열에 담아 리턴해야 한다.

3. 모든 태그는 .classList를 이용하여 클래스명 배열을 만들고 반복문을 돌리든,

if문을 돌리든 해당 클래스명이 있는지 확인 후 새로운 배열에 담아주면 되는 것이다.

4. 여기서 이용할 recursion개념은 태그 안의 태그의 내용을 확인할 시 재귀함수를 이용해야 한다는 것인데

그 부분은 if문의 else부분을 살펴보면 될 것이다.

 

디테일 때문에 코드를 첨삭하는데 애를 먹긴 했지만, 이 문제는 처음부터 끝까지 혼자의 힘으로 풀었다는 것에 참으로 뿌듯했다.

 

-stringfyJSON 함수에 대하여.

 

이 문제가 정말 멘탈 여러번 건드렸다. 내가 제일 감을 잡기 힘들었던 것이 배열에 관한 stringify였다. 

조금 더 깊이 파고들지 못한 점을 꼽자면 배열 자체를 한 단위로 계속 바라보았다는 것? 배열 안의 원소 각각을 stringify하고 comma 또한 따로 곁들여 줄 수 있었는데 그것을 생각하지를 못하니 자꾸 헛돌기만 했다. 재귀함수를 사용하는 것에 있어서 좀 더 문제를 분리하고 촘촘하게 코드를 짤 수 있는 힘이 필요하다고 생각했다. 코드는 너무 길어서 이미지는 생략하겠다.

 

*pre course 과제 완료 !

프리코스에서 제공하는 과제는 사실상 모두 끝냈다고 볼 수 있다. 예상보다 빠르게 끝난 탓에 다른 공부를 시작해야겠지만, 그래도 공부를 하며 스스로 프로그래밍에 대해 경험해보고 더 깊이 생각할 수 있었다. 4주가 안되는 기간 동안 공부를 하며 의외로 꽤 재밌다는 마음이 여러번 들었다. (물론 머리는 너무도 아프지만..) 공부를 하면 할수록 하고싶은 공부가 생긴다는 것에 감사했고, 내 앞으로의 계획을 계속 상기하며 꾸준히 해야겠다는 생각을 했다. 일단 나의 목표들을 정리해보자면,

 

1. 영어 (회화, 원어 문서 독해 능력) > 5월 달에 있을 '라 피신'을 대비하기 위하여 필요하다.

2. C언어 예습 > 위의 이유와 이하동문이다.

3. 알고리즘, 코딩 테스트 유사문제 꾸준히 풀기 > 환경이 허락한다면, 영어학원에서 스터디가 끝난 후에 약간 소음이 있는 곳에서 집중하는 힘을 기를 수 있어야 한다.

4. 프리코스 과제, 강의 복습과 리팩토링 시도 > 좀 더 직관적인 코드를 짜기 위해 복습 차원에서 마무리하자.

 

*스마일게이트 서버개발캠프에서 꼭 연락이 왔으면 좋겠다... 원하는 결과를 얻을 수 있다면 눈 보호를 위해 안경은 하나 꼭 맞춰야지.

 

 

'Development' 카테고리의 다른 글

[20.12.17] 옵저버 패턴  (1) 2024.01.06
[20.10.03] TDD에 대한 간단한 고찰  (2) 2024.01.06
[19.11.19] TIL  (0) 2024.01.06
[19.11.17] TIL, 개인 코드 리뷰.  (1) 2024.01.06
[19.11.14] 대외활동 탐색.  (1) 2024.01.06