2022.5.11. (수)
1. 오늘의 소감
- 오늘 코플릿을 초스피드로 풀어서 기분이 짜릿했다! 마지막 21번 문제가 어려워서 어찌저찌 풀고나니 스파게티 코드가 되어버렸지만, 그래도 레퍼런스를 보지 않고 풀 수 있어서 조금 뿌듯😎! 물론 레퍼런스 코드를 확인하고 나니, 너무 간단하고 핵심적인 코드로 되어있어서 그에 반해 장황한 내 코드를 보는 게 씁쓸하긴 했지만. 그래도 점점! 알고리즘적인 문제 풀이에 재미를 느껴가고 있다!
- 이전의 회고록을 보니 ‘내가 헷갈렸거나 어려웠던 부분'이 어디였는지 찾는 게 어려워져서, 이제부터는 꼭 기억해야된다고 생각했던 부분 위주로 회고를 쓸 예정이다.
2. 학습한 키워드
- 객체, key, value, 속성, for ... in, Dot notation, Bracket Notation, delete obj.key, in 연산자, Object.keys(obj).length === 0 로 빈 객체 판단하기
3. 키워드를 바탕으로 학습 내용 설명해보기
- 객체는 연관된 다량의 데이터를 하나로 묶어줄 수 있는 서랍. 여러 데이터를 한꺼번에 넣어 줄 수 있는, 키와 값의 쌍(key-value pair)으로 이루어진 참조형 데이터 타입이다.
- 객체가 배열과 다른 점은 데이터에 **‘의미'**를 부여해 줄 수 있다는 것이다. (객체는 key 라는 이름표를 붙여줄 수 있는 대신에, 배열은 인덱스밖에 줄 수 없으니까.)
- key 값이 동적이지 않고 고정되어 있다면 dot notation 으로 obj.name 또는 obj[’name’] 으로 값에 접근하면 된다. 고정된 키일 경우 대괄호 [] 안에는 반드시 ‘문자열' 형태로 넣어줘야 한다.
- key 값이 동적으로 변한는 변수라면 dot notation 접근법은 쓸 수 없고 반드시 obj[var] 로 접근해야한다.
- 객체 속성 제거는 delete obj.name;
- in 연산자는 해당 키가 객체에 존재하는지 판별해 true, false 를 반환한다.
- ‘name’ in obj; key 가 변수면 var in obj;
- 객체에 존재하지 않는 키로 접근하면 undefined 가 나온다.
- 해당 키의 값이 undefined가 할당된 게 아니라면, obj.key === undefined 는 이것과 같다. key in obj
- 객체 순회에는 for ... in 문을 쓴다.
- for (let key in obj) { }
- for ... of 반복문은 객체에 쓸 수 없다. 반복가능한(literable) 데이터가 아니니까.
- 빈 객체 판단은 이렇게 Object.keys(obj).length === 0
- {} === {} //false
- 배열과 마찬가지로 객체끼리는 모양이 같아도 등치 비교하면 false 가 나온다. 따라서 obj === {} 로 빈 배열을 판단할 수 없다. (항상 false가 나올테니까.)
- 왜냐하면 자바스크립트에서는 두 객체를 ‘주소가 다른 두 개의 객체'로 생각하기 때문이다.
4. 어려웠던 키워드
- 객체 코플릿 21번이 어려웠다. 가장 떠올리기 어려원던 코드는 ‘문자를 카운팅 할 때마다, 최고 카운트 수와 최고 카운트 문자를 계속 갱신한다.’ 파트. 유사 문제를 풀 때를 대비해 ‘카운팅 될 때마다 갱신시키기'를 포인트로 기억해둬야 겠다.
//Q) 문자열을 입력받아 가장 많이 반복되는 문자(letter)를 리턴해야 합니다.
// 띄어쓰기는 제외합니다.
// ** 가장 많이 반복되는 문자가 다수일 경우, 가장 먼저 해당 횟수에 도달한 문자를 리턴해야 합니다.
// 빈 문자열을 입력받은 경우, 빈 문자열을 리턴해야 합니다.
function mostFrequentCharacter(str) {
// TODO: 여기에 코드를 작성합니다.
let obj = {mostCnt: 0, mostChar: ''};
for(let char of str){
//공백 문자면 지나가라
if(char === ' '){
continue;
}
//key값이 없으면 기본값 0을 준 뒤,
if(obj[char] === undefined){
obj[char] = 0;
}
//카운트 증가시키기
obj[char]++;
//문자를 카운팅 할 때마다, 최고 카운트 수와 최고 카운트 문자를 갱신한다.
//단 부등호에 등호를 없애서, 최고 카운트 수가 같으면 먼저 도달한 문자가 그대로(갱신x)
if(obj[char] > obj['mostCnt']){
obj['mostCnt'] = obj[char];
obj['mostChar'] = char;
}
}
//최고 카운트 문자를 리턴한다.
return obj['mostChar'];
}
728x90
반응형
'TIL' 카테고리의 다른 글
[TIL] #13. DOM 다루기 (0) | 2022.12.06 |
---|---|
[TIL] #12. 원시자료형&참조 자료형 그리고 스코프 (0) | 2022.12.06 |
[TIL] #10. 배열 (0) | 2022.12.05 |
[TIL] #9. CLI... nvm... node.js... npm... (0) | 2022.12.05 |
[TIL] #8. 계산기를 만들자! (0) | 2022.12.04 |