[2024.05.21] TIL 24일차

김선민·2024년 5월 22일

[ 본캠프 24일차 기록 ]

🖥️ 오늘 공부한 내용 🖥️

react 알고리즘

  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}

// 결과를 저장할 객체를 선언한다
// 문자열을 순회하면서 각 문자의 개수를 센다
// result 객체에 현재 문자가 존재하지 않으면 초기화한다
// 이미 존재하면 개수를 증가시킨다

function countCharacters(s) {
  const result = {};

  for (let i = 0; i < s.length; i++) {
    if (!result[s[i]]) {
      result[s[i]] = 1;
    } else {
      result[s[i]] += 1;
    }
  }

  return result;
}

function countCharacters(s) {
  // 정답을 출력할 오브젝트 하나 선언 해놓자! {}
  // 문자열을 앞에서부터 하나씩 순회하는 로직
  // 순회하는 문자열이 출력할 오브젝트에 들어있지 않으면 추가를 해준다 {문자열 : 1}
  // 이미 해당 문자열이 출력할 오브젝트에 있다면   ->   { 그 문자열 : 2} + 1
  // 대소문자 합쳐주는 로직을 빼먹었구나...
  // 리턴 맨위에 선언해 둔 오브젝트

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

// 테스트 코드
function testCountCharacters() {
  const testCases = [
    {
      input: "hello world",
      expected: { h: 1, e: 1, l: 3, o: 2, " ": 1, w: 1, r: 1, d: 1 },
    },
    { input: "banana", expected: { b: 1, a: 3, n: 2 } },
    { input: "", expected: {} },
    { input: "aabbcc", expected: { a: 2, b: 2, c: 2 } },
  ];

  testCases.forEach(({ input, expected }, index) => {
    try {
      const result = countCharacters(input);
      const isEqual = JSON.stringify(result) === JSON.stringify(expected);
      if (!isEqual)
        throw new Error(
          `Expected ${JSON.stringify(expected)}, but got ${JSON.stringify(
            result
          )}`
        );
      console.log(`Test ${index + 1}: Passed`);
    } catch (error) {
      console.log(`Test ${index + 1}: Failed - ${error.message}`);
    }
  });
}

// 테스트 함수 호출 : 터미널에 node practice1.js 실행
testCountCharacters();

[ 문제 답 ]

// 결과를 저장할 객체를 선언한다
// 문자열을 순회하면서 각 문자의 개수를 센다
// result 객체에 현재 문자가 존재하지 않으면 초기화한다
// 이미 존재하면 개수를 증가시킨다

function countCharacters(s) {
  const result = {};
  for (let i = 0; i < s.length; i++) {
    if (!result[s[i]]) {
      result[s[i]] = 1;
    } else {
      result[s[i]] += 1;
    }
  }
  return result;
}
profile
웹 프론트엔드

0개의 댓글