11일차

2021. 8. 2. 22:06
반응형

2021. 08. 02 월요일

 

1. Today's Key points!

  • 객체 코플릿을 페어와 함께 풀었고, 풀면서 이해가 안됬었고 어떻게 해결했는지 다시한번 고민해보고자 한다.
  • 객체 메소드. Object.keys(), Object.entry()
  • for...in, for...of

2. 공부해보자!

  • Object.keys(), Object.entry()

    -Object.keys() : 이 메소드는 주어진 객체의 속성 이름들을 일반적인 반복문과 동일한 순서로 순회되는 열거할 수 있는 배열로 반환합니다.
    Object.keys() 예시
    -Object.entries() : 메서드는 for...in와 같은 순서로 주어진 객체 자체의 enumerable 속성 [key, value] 쌍의 배열을 반환합니다.

Object.entries() 예시

  • slice() 용도

    - 배열에 담긴 데이터가 함부로 수정되는 것을 방지하기 위해 배열의 전부 혹은 일부를 복사하는 메소드.

3. 복습하기!

  • mostFrequentCharacter : 문자열을 입력받아 가장 많이 반복되는 문자(letter)를 리턴해야 합니다.
    • 주의사항 : 띄어쓰기 제외. 가장 많이 반복되는 문자가 다수일 경우, 가장 먼저 해당 횟수에 도달한 문자를 리턴해야 합니다. 빈 문자열을 입력받은 경우, 빈 문자열을 리턴해야 합니다.

처음에는 str의 요소를 key값으로 반복된 횟수를 value로 하는 객체를 만들어서, 그 객체의 value를 비교해서 문자를 리턴하는 코드를 짜려고 노력했다. 그런데 지금까지 배운 개념으로는 객체에는 순서가 없기에 객체안의 value를 비교할 방법을 찾지 못하는 상황에서 최대한 방법을 찾아서 코드를 짰다.

레퍼런스 없이 푼 결과

한 객체를 생성해서 그 안에 문자열의 문자를 key로, 반복수를 value로 갖는 속성을 추가해주고, 속성의 갯수가 2개가 되면 그 2개의 속성값 끼리 비교해서 더 낮은 속성을 제거하고, 또 하나 추가해서 비교해서 제거하고를 반복해서 남아있는 속성의 key값을 리턴해내는 함수를 만들었다.

이렇게 한 결과 '가장 많이 반복되는 문자가 다수일 경우, 가장 먼저 해당 횟수에 도달한 문자를 리턴해야 합니다.' 이 주의사항을 제외하고는 모두 통과하는 코드를 만들었다. 처음엔 이 주의사항이 이해가 되지않았다. 예를 들면 'abcddcba'라는 문자열이있는데, d가 가장 많이 반복되고 먼저 해당 횟수에 도달하는 문자라는 것이 이해가 되지않았다. a가 가장먼저 해당되는거 아니야? 라고 하면서 문제를 의심했지만, 곰곰히 생각해보니 문자열 순서대로 생각해봤을 때, a=1, b=1, c=1, d=1, d=1, c=1, b=1, a=1 이렇게 반복횟수가 세어지고 순서대로 더하면 d가 먼저 2에 도달하는 것을 알 수 있었다. 그래서 어떻게 하면 저런 순서대로 코드를 진행할 수 있는 구문을 짤 수 있을지 고민하다가 생각해내기가 어려워서 레퍼런스 코드 비슷한걸 찾았고, 이해한뒤 다시 혼자 풀어보았다.

레퍼런스 참고 후 혼자 푼 결과

이렇게 다시 풀면서 바로 이해하지 못했던 주의사항에 대해 완전히 이해하면서 문제를 풀 수 있었다. 그리고 이전에 count가 필요한 함수에서 count += 1 을 해주는 것 처럼 객체의 value에 1씩 더해줄 수 있는 방법을 하나 배웠다. 

반응형
LIST

'코드스테이츠 수강 TIL > Section 1' 카테고리의 다른 글

15일차  (0) 2021.08.06
14일차  (0) 2021.08.05
13일차  (0) 2021.08.04
12일차  (0) 2021.08.03
10일차  (0) 2021.07.30

BELATED ARTICLES

more