글쓰는쿼카의 PM 여정

⏳문자열 내 각 문자의 개수 반환 본문

개발/알고리즘 & 코딩테스트

⏳문자열 내 각 문자의 개수 반환

글쓰는쿼카 joymet33 2024. 5. 24. 14:38

0. 기본 정보

- 학습일: 2024. 5. 24.(금)

- 출처: 스파르타 부트캠프 알고리즘 탐험반(1주차 문자열)


문제 1. 문자열 내 각 문자의 개수 반환

// 문제 1: 문자열 내 각 문자의 개수 반환
// 문제 정의:
// 주어진 문자열에서 각 문자가 몇 번 등장하는지 세어라. 결과는 객체 형태로 반환한다.

// 조건:

// 대소문자를 구분한다.
// 공백도 하나의 문자로 간주한다.
// 빈 문자열이 주어질 수도 있다.
// 예시:

// 입력: "hello world"
// 출력: {'h': 1, 'e': 1, 'l': 3, 'o': 2, ' ': 1, 'w': 1, 'r': 1, 'd': 1}

// 입력: "hello World"
// 출력: {'h': 1, 'e': 1, 'l': 3, 'o': 2, ' ': 1, 'W': 1, 'r': 1, 'd': 1}

나의 답변 1)

  • 빈 객체 answer 만들기
  • for문 통해 문자열 s의 길이만큼 반복하기
  • answer에 문자열 s가 있다면 +1, 없다면 1 만들어주기
  • 콘솔에 answer 출력하기
let s = "hello world";

function count(s) {
  const answer = {};
  for (let i = 0; i < s.length; i++) {
    if (!answer[s[i]]) {
      answer[s[i]] = 1;
    } else {
      answer[s[i]] += 1;
    }
  }
  return answer;
}

count(s);

<오류일지>

빈 객체에 값을 넣는다?

answer[s[i]] = 1

앞서 answer은 빈 객체로 선언했는데, 어떻게 빈 객체에 문자와 그 문자의 갯수값이 들어갈 수 있을까?

해결점은 객체(object) 사용법!

객체를 사용하는 2가지 방법은 점(.)과 대괄호([])이다.

let 강아지_정보 = { 이름: "밤송이", 종: "포메라니안", 나이: 8 }

// 여기서 강아지_정보의 나이 값인 8이 나오게 하려면?

// 첫째, 점(.)사용법 : object.key
강아지_정보.나이 // output: "8"

// 둘째, 대괄호([]) 사용법 : object[key]
강아지_정보[나이] // output: "8"

 

const 로 선언한 변수가 변한다?

const answer = {}

var, let, const 중에 오직 const로 선언한 변수만이 재할당이 안 된다는 것을 알고 있다.

그런데 어떻게 const로 선언한 빈 객체 answer가 꽉 찰 수 있을까?

해결점은 const 객체 선언 시 허점!

const로 객체를 선언했어도 객체라는 틀은 유지하되 객체 안 내용은 변할 수 있다.