프로그래머스 Level 1 - 문자열 나누기

크롱·2023년 11월 24일
0

코딩테스트

목록 보기
53/61

문제

https://school.programmers.co.kr/learn/courses/30/lessons/140108

입출력 예 #1
s="banana"인 경우 ba - na - na와 같이 분해됩니다.


입출력 예 #2
s="abracadabra"인 경우 ab - ra - ca - da - br - a와 같이 분해됩니다.


입출력 예 #3
s="aaabbaccccabba"인 경우 aaabbacc - ccab - ba와 같이 분해됩니다.

나의 풀이

문제: x와 x가 아닌 다른 글자들이 나온 횟수를 각각 셉니다. 처음으로 두 횟수가 같아지는 순간 멈추고, 지금까지 읽은 문자열을 분리합니다.

==> 이에따라
첫번째 글자수(firstCount)와
첫번째글자가 아닌 다른 글자의 수(elseCount)를 비교해서, 같으면 answer++해줌.

그리고 분리될때, first 문자가 바뀌므로
first=s[i+1]

입출력 예 2번처럼, ab - ra - ca - da - br - a
이 경우에는 firstCount!==elseCount이므로,
answer++ 예외처리해줌.

function solution(s) {
    var answer = 0;
let first = s[0]
 let firstCount=1
 let elseCount=0

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

    if(elseCount===firstCount){
        answer++
        first=s[i+1]
        console.log(first)
    } 
 }

   if(firstCount!==elseCount){
       answer++
   }

    return answer;
}

다른 풀이

나랑비슷한 방법으로 푸셧는데, count 하나로 이용하심

function solution(s) {
    let answer = 0;
    let current;
    let count = 0;

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

    return answer;
}
profile
👩‍💻안녕하세요🌞

0개의 댓글