\(@^0^@)/
[TDL] 05/29 Today's-Done-List 본문
- 유데미, algorithm 학습
배열 관련 문제 패턴인 빈도 카운터, 다중 포인터의 문제들 각 두 개씩 풀었음.
패턴에 따라 문제에 접근하는 방식이 비슷하기에, 관련 문제들을 조금 더 풀어보고 내 것으로 만든다면 어느 정도는 맞출 수 있을 것 같다.
중요한 것은 이러한 문제들을 보았을 때 어떻게 접근해야 하는지 바로 알아챌 수 있는지!!
더 많은 문제들을 풀어보면, "이 문제는 다중 포인터로 풀어야 할 문제구나!" 또는 "빈도수 카운터로 풀어야 할 문제구나!"라고 확신이 올 날이 있겠지?
현재 빈도 카운터 문제에서 조금 어려운 로직이 있는데, 제대로 파악해두면 여러모로 유용할 것 같음.
내 것으로 만들자!
빈도 카운터 문제 : 두 개의 양의 정수가 주어졌을 때 두 숫자의 자릿수가 동일한지 확인하여라.
TIme : O(N)
Sample Input :
1. sameFrequency(182, 281) // true
2. sameFrequency(34, 41) // false
3. sameFrequency(3589578, 5879385) // true
4. sameFrequency(22, 222) // false
function sameFrequency(num1, num2){
num1 = String(num1)
num2 = String(num2)
if(num1.length !== num2.length) return false
const lookup = {};
for (let i = 0; i < num1.length; i++) {
let letter = num1[i];
// 만약에 lookup[num1[i]] 즉, lookup[letter]이 이미 lookup의 obj값으로 초기화 된 경우에는 1을 더해주고
// 다를 경우에는 1과 같게 설정해준다.
// 예시로 sameFrequency(34, 41)일 경우에, num1에 속하는 3, 4를 적용해보자.
// 3이 lookup안에 있나? 없으니, {3 : 1}
// 4가 lookup안에 있나? 없으니, {3 : 1, 4 : 1}
lookup[letter] ? lookup[letter] += 1 : lookup[letter] = 1;
}
for(let i = 0; i < num2.length; i++) {
let letter = num2[i];
// 예시로 sameFrequency(34, 41)일 경우에, num2에 속하는 4, 1를 적용해보자.
// 현재 lookup은 {3 : 1, 4 : 1} 이다.
// num2[0]의 4가 lookup안에 있나? 있으니, {3 : 1}
// num2[1]의 1이 lookup안에 있나? 없으니 false
if(!lookup[letter]) {
return false;
} else {
lookup[letter] -= 1;
}
}
return true;
}
- 블로깅, 제로베이스 회고
https://dev-minju.tistory.com/221
- 제로베이스 HTML/CSS 과제
구현해야 할 사항들이 생각보다 자세히 나와있어서 미션 1은 엄청 어렵진 않은데, 오랜만에 CSS를 하려다 보니깐 스타일을 어떻게 줘야 할지 잘 모르겠는 부분들이 있다... 벌써 잊었네^^
검색해보면서 구현한다면 아직까지는 충분히 할 수 있다고 생각하는 미션들이다.
문제는 재사용성 가능한 코드들을 분리해야 하거나, 중복된 코드들을 줄여서 효율성과 가독성을 높이는 것!
주어진 강의의 코드들을 보고 어떻게 해야 제대로 리팩토링 할 수 있을지 알아보자.
내일 미션1 마무리하고 미션 2까지 구현하고 JS스터디!!
- 주말 셀프 회고
최근 중 제일 집중이 젤 됐던 시간들이다.
아무래도 어제 프리온 보딩 했던 분들과 이런저런 개발 관련 정보들을 공유하면서 자극을 받은 것일까나~?
요새 하고있는 프로젝트와 JS스터디 둘 다 잘 배워두면 정말 많이 성장할 것 같다. 잘하자!
[ 출처, 참고 : JavaScript 알고리즘 & 자료구조 마스터클래스 ]
'TDL' 카테고리의 다른 글
[TDL] 05/31 Today's-Done-List (0) | 2022.05.31 |
---|---|
[TDL] 05/30 Today's-Done-List (0) | 2022.05.30 |
[TDL] 05/27 Today's-Done-List (0) | 2022.05.27 |
[TDL] 05/25 Today's-Done-List (0) | 2022.05.26 |
[TDL] 05/24 Today's-Done-List (0) | 2022.05.24 |