신나는 알고리즘 풀이 시간.
문자열 s가 입력되었을 때 다음 규칙을 따라서 이 문자열을 여러 문자열로 분해하려고 합니다.
- 먼저 첫 글자를 읽습니다. 이 글자를 x라고 합시다.
- 이제 이 문자열을 왼쪽에서 오른쪽으로 읽어나가면서, x와 x가 아닌 다른 글자들이 나온 횟수를 각각 셉니다. 처음으로 두 횟수가 같아지는 순간 멈추고, 지금까지 읽은 문자열을 분리합니다.
- s에서 분리한 문자열을 빼고 남은 부분에 대해서 이 과정을 반복합니다. 남은 부분이 없다면 종료합니다.
- 만약 두 횟수가 다른 상태에서 더 이상 읽을 글자가 없다면, 역시 지금까지 읽은 문자열을 분리하고, 종료합니다.
문자열 s가 매개변수로 주어질 때, 위 과정과 같이 문자열들로 분해하고, 분해한 문자열의 개수를 return 하는 함수 solution을 완성하세요.
솔직히 말하면 문제를 잘 이해하지 못 했다.
3번째 예제의 경우, 첫 번째 문자를 a라고 설정했다면, 세 번째 글자까지 읽었을 때 a는 3이다.
그리고 b로 넘어가면 b는 2가 된다. 그 다음에 다시 a가 한 번 더 나와서 a는 4가 된다.
거기서 c가 두 개 나오게 된다. 그래서 a는 4, a가 아닌 문자(b와 c를 합한 것.) 이렇게 해서 4... 가 되는 듯 하다.
이걸 코드로 풀면 이런 모양새가 된다.
count는 분리한 횟수. i는 index이며, 초깃값은 0이다. 가장 첫 번째 문자를 x로 둘 것이기 때문이다.
처음에 로직이 실행되면, x = s[0]으로 시작한다. xCount는 x의 숫자. otherCount는 다른 문자들의 합이다.
그리고 for 문을 돌려서 x가 나올 때마다 xCount를 1씩, 그리고 다른 문자가 나올 때마다 otherCount를 1씩 늘리고, 그 둘의 숫자가 같아지는 순간, 분리하여 count을 1올리고, i는 그 다음 문자열로 세팅해준다.
마지막으로, 조건 충족이 불가능해질 시, 남은 문자열을 하나로 처리해 분리하며 count을 1 올려준다.
이런 식으로 해당 문제의 답을 구할 수 있다.
뉴스 피드 프로젝트 근황
1. 리덕스를 통한 전역 관리를 추가하였다.
리덕스를 통해, 현재 로그인한 유저 데이터에 대한 상태와 로그인 여부에 대한 상태를 관리하게끔 만들었다.
전자는 현재 로그인해있는 유저의 고유 id값을 리턴하며, 후자는 불리안타입을 리턴한다.
이걸 통해 다른 팀원들이 로그인 여부를 참고해 별개의 페이지를 보여줄 수 있게끔 하였으며, 또한 로그인한 유저의 id를 통해 다양한 데이터를 가져올 수 있게끔 하였다.
'본 캠프' 카테고리의 다른 글
리액트 숙련 주차. (1) (3) | 2024.11.21 |
---|---|
뉴스 피드 프로젝트. (4) (0) | 2024.11.20 |
뉴스 피드 프로젝트. (2) (1) | 2024.11.18 |
뉴스 피드 프로젝트. (1) (0) | 2024.11.15 |
리액트 숙련. (8) (2) | 2024.11.14 |