🧬알고리즘/Programmers

[JavaScript] 문자열 나누기

뉴발자 2024. 10. 15.
728x90

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

문제

문자열 s가 입력되었을 때 다음 규칙을 따라서 이 문자열을 여러 문자열로 분해하려고 합니다.

  • 먼저 첫 글자를 읽습니다. 이 글자를 x라고 합시다.
  • 이제 이 문자열을 왼쪽에서 오른쪽으로 읽어나가면서, x와 x가 아닌 다른 글자들이 나온 횟수를 각각 셉니다. 처음으로 두 횟수가 같아지는 순간 멈추고, 지금까지 읽은 문자열을 분리합니다.
  • s에서 분리한 문자열을 빼고 남은 부분에 대해서 이 과정을 반복합니다. 남은 부분이 없다면 종료합니다.
  • 만약 두 횟수가 다른 상태에서 더 이상 읽을 글자가 없다면, 역시 지금까지 읽은 문자열을 분리하고, 종료합니다.

문자열 s가 매개변수로 주어질 때, 위 과정과 같이 문자열들로 분해하고, 분해한 문자열의 개수를 return 하는 함수 solution을 완성하세요.

 

 

예시

s result
"banana" 3
"abracadabra" 6
"aaabbaccccabba" 3

 

예시 1

s = "banana" 의 경우 ba - na - na 와 같이 분리된다.

 

예시 2

s = "abracadabra" 의 경우 ab - ra - ca - da - br - a 와 같이 분리된다.

 

예시 3

s = "aaabbaccccabba" 의 경우 aaabbacc - ccab - ba 와 같이 분리된다.

 

 

나의 풀이

function solution(s) {
  let string = "";
  let count = 0;
  let result = 0;
    
  [...s].forEach((v, i) => {
    string += v;
        
    if (s[i+1] === undefined) return result++;
      
    string[0] === v ? count++ : count--;
       
    if (!count) {
      result++;
      string = "";
    }
  });
    
  return result;
}

 

 

풀이 방법

1. 각 원소를 넣어줄 string, 첫 번째 글자와 같고 다름을 셀 count, 결과를 셀 result 변수를 선언해준다.

 문자열 s를 배열로 변환한 후 forEach() 함수를 사용해서 반복해준다.

function solution(s) {
  // 1
  let string = "";
  let count = 0;
  let result = 0;
    
  [...s].forEach((v, i) => {
    ...
  });
    
  return result;
}

 

2. 문자열 s의 원소를 string 변수에 넣어준다.

 2-1. 만약 문자열 s에 다음 원소가 없다면 result 값을 증가시킨다.

 2-2. string 문자열의 첫 번째 원소 값과 문자열 s의 원소의 값이 같다면 count를 증가시키고, 다를 경우 감소시킨다.

 2-3. 만약 count 값이 false라면 (두 횟수가 같다면) result 값을 1 증가시키고 string 변수를 초기화한다.

function solution(s) {
  let string = "";
  let count = 0;
  let result = 0;
    
  [...s].forEach((v, i) => {
    // 2
    string += v;
    
    // 2-1
    if (s[i+1] === undefined) return result++;
    
    // 2-2
    string[0] === v ? count++ : count--;
    
    // 2-3
    if (!count) {
      result++;
      string = "";
    }
  });
    
  return result;
}

 

 

 

 

 

 

 

 

 

 

728x90

'🧬알고리즘 > Programmers' 카테고리의 다른 글

[JavaScript] 달리기 경주  (0) 2024.10.29
[JavaScript] 가장 가까운 같은 글자  (0) 2024.10.15
[JavaScript] 햄버거 만들기  (0) 2024.10.15
[JavaScript] 폰켓몬  (4) 2024.10.03
[JavaScript] 완주하지 못한 선수  (2) 2024.10.03

댓글