\(@^0^@)/
[TDL] 06/16 Today's-Done-List 본문
- udemy 알고리즘 강의 (재귀 2문제)
- 재귀로 단어 reverse.
- 예시로 입력값이 "awesome"일 경우, "emosewa"가 나오고
입력값이 "helloworld"일 경우, "dlrowolleh"가 나옴.
재귀로 안 풀면 쉬운데, 막상 재귀로 풀으려니 감이 안 잡히더라ㅠ
재귀를 배우는 상황이기에 최대한 재귀적으로 생각해보려 하는데, 아직은 무리다ㅠ
그런데 어떤 코드가 더 시간 복잡도, 공간 복잡도 적으로 좋은 코드인지는 아직 잘 모르겠다.
계산하는 법을 잘 모르겠다... 우선은 알린이 이기에 정답이면 좋은 상황..!!
우선은 모든 자료구조를 한번 훑고 시간 복잡도에 대해 생각해보기로ㅠ
- 예시로 입력값이 "awesome"일 경우, "emosewa"가 나오고
/* 내가 풀은 코드 */
function reverse(str) {
return str.split("").reverse().join("");
}
/* 재귀를 이용한 코드*/
function reverse(str) {
if (str.length <= 1) return str;
return reverse(str.slice(1)) + str[0];
}
reverse("awesome") // "emosewa"
reverse("helloworld") // "dlrowolleh"
- 해당 단어가 Palindrome 하는지
Palindrome의 정의
a word, phrase, or sequence that reads the same backward as forward, e.g., madam or nurses run.
- 예시로 입력값이 "tacocat"일 경우, tac와 cat에서 tac를 reverse 하면 cat이고, cat를 reverse 하면 tac이 되는
the same backward as forward 이므로 true를 반환한다.
입력값이 "awesome"일 경우, 처음과 끝의 알파벳이 벌써 a와 e 이므로 회문이 안 되는 단어이다. false 반환. - 이번 문제도 재귀로는 잘 생각나지가 않아서ㅠ 재귀를 사용하지 않고,
for문을 두 개 생성해서 비교하려 하였는데 코드가 조금 지저분해지고, 복잡해지는 느낌을 받았다.
솔루션을 보니, 생각보다 쉽고 간결하게 구현할 수 있어서 머리를 한방 맞은 느낌..!!
내일은 조금 더 재귀적인 사고를 가질 수 있도록 머리를 굴려보자!!
function isPalindrome(str) {
if (str.length === 1) return true;
if (str.length === 2) return str[0] === str[1];
if (str[0] === str.slice(-1)) return isPalindrome(str.slice(1, -1));
return false;
}
isPalindrome("foobar"); // false
isPalindrome("tacocat"); // true
- 제로베이스 JS스터디 미션 2
우선 작동은 하는데, 마음에 안 드는 부분이 한둘이 아니다
구현 주의사항 중
1. 코드 중복을 지양하고, 2. 불필요한 렌더링을 지양하고, 3. 재사용이 가능하도록 구현해야 하며, 4. 모듈화를 해야 하는데
내가 보기에 중복 코드가 많아 보이고, setInterval로 1초마다 해당 함수를 호출하게 만들어서 아마도 불필요한 렌더링을 하고 있는 것 같은 느낌이다...
또, 현재 모듈화를 하지 않아서 재사용을 할 수 없는 상태... 한마디로 목만 돌아가는 비둘기세션과 스터디를 듣고 나서 어떻게 제대로 컴포넌트를 쪼갤 수 있을지, 중복 코드를 없앨 수 있을지에 대해 더 고민해보자.
17:50 오후 회고 스터디 (만족도 : 7)
배고파서 맘스터치 갔다 온 거 빼고는 집중도가 나쁘지 않았어서 만족도는 7점으로 하겠음.
- 제로베이스 라이브 세션
웹 배포 방식에 대한 강의였는데, 아직 내 레벨에서 듣기에는 조금 벅찬 부분이 있어서... 듣다가 중간에 나와,
문법 스터디 과제인 class, prototype를 조금 더 파보았다.
개인적으로 코딩 악마가 알잘딱깔센하게 정리를 잘해주시는 것 같아서 이 강의를 보며 개념들을 마무리하였음.
아직도 나에게 class, prototype은 조금 추상적인 개념?으로 생각돼서 제대로 이해한 건지 아닌 건지 잘 모르겠다.
텍스트로 보면은 아~ 그래~ 이거였지. 이런 느낌 이긴 한데, 막상 구현해보라 하면은 어디서부터 어떻게 구현해야 할지 하나도 모르겠는... 그럼 모르는 거겠지?ㅠ 조만간 두 문법을 사용해서 어떤 것을 구현해볼 기회가 있으면 좋겠다.
https://www.youtube.com/watch?v=OpvtD7ELMQo
- js문법 스터디
오늘은 사담? 이 조금 길었다.
제로베이스의 미션에 대해 헷갈리는 부분, 모르는 부분들에 대해 서로 공유하는 시간을 갖고
제로베이스의 커넥to와 부스트 캠프에 대해 얘기하느라 정작 class, prototype에 대해서는 많이 공유를 하진 못 했지만,
스터디를 준비하면서 그래도 새로운 것들을 알게 되어 만족스럽다.
22:50 저녁 회고 스터디 (만족도 : 8)
스터디 이후 나머지 시간에는 내가 왜 개발자가 되고 싶어서 공부를 하고 있는지, 나의 장점은 무엇인지 정리하고 마인드셋 할 겸 부스트 캠프에 지원하기 위해 자소서를 썼다.
아직 다 쓰진 못했고, 내일이나 모레까지 틈틈이 쓸 예정
'TDL' 카테고리의 다른 글
[TDL] 06/18 Today's-Done-List (0) | 2022.06.20 |
---|---|
[TDL] 06/17 Today's-Done-List (0) | 2022.06.17 |
[TDL] 06/15 Today's-Done-List (0) | 2022.06.16 |
[TDL] 06/14 Today's-Done-List (0) | 2022.06.14 |
[TDL] 06/13 Today's-Done-List (0) | 2022.06.14 |