File tree Expand file tree Collapse file tree
Expand file tree Collapse file tree Original file line number Diff line number Diff line change 1+ # [ level 1] 문자열 나누기 - 140108
2+
3+ [ 문제 링크] ( https://school.programmers.co.kr/learn/courses/30/lessons/140108 )
4+
5+ ### 성능 요약
6+
7+ 메모리: 39.5 MB, 시간: 105.69 ms
8+
9+ ### 구분
10+
11+ 코딩테스트 연습 > 연습문제
12+
13+ ### 채점결과
14+
15+ 정확성: 100.0<br />합계: 100.0 / 100.0
16+
17+ ### 제출 일자
18+
19+ 2026년 01월 28일 12:15:32
20+
21+ ### 문제 설명
22+
23+ <p >문자열 <code >s</code >가 입력되었을 때 다음 규칙을 따라서 이 문자열을 여러 문자열로 분해하려고 합니다.</p >
24+
25+ <ul >
26+ <li >먼저 첫 글자를 읽습니다. 이 글자를 x라고 합시다.</li >
27+ <li >이제 이 문자열을 왼쪽에서 오른쪽으로 읽어나가면서, x와 x가 아닌 다른 글자들이 나온 횟수를 각각 셉니다. 처음으로 두 횟수가 같아지는 순간 멈추고, 지금까지 읽은 문자열을 분리합니다.</li >
28+ <li ><code >s</code >에서 분리한 문자열을 빼고 남은 부분에 대해서 이 과정을 반복합니다. 남은 부분이 없다면 종료합니다.</li >
29+ <li >만약 두 횟수가 다른 상태에서 더 이상 읽을 글자가 없다면, 역시 지금까지 읽은 문자열을 분리하고, 종료합니다.</li >
30+ </ul >
31+
32+ <p >문자열 <code >s</code >가 매개변수로 주어질 때, 위 과정과 같이 문자열들로 분해하고, 분해한 문자열의 개수를 return 하는 함수 solution을 완성하세요.</p >
33+
34+ <hr >
35+
36+ <h5 >제한사항</h5 >
37+
38+ <ul >
39+ <li >1 ≤ <code >s</code >의 길이 ≤ 10,000</li >
40+ <li ><code >s</code >는 영어 소문자로만 이루어져 있습니다.</li >
41+ </ul >
42+
43+ <hr >
44+
45+ <h5 >입출력 예</h5 >
46+ <table class =" table " >
47+ <thead><tr>
48+ <th >s</th >
49+ <th >result</th >
50+ </tr >
51+ </thead >
52+ <tbody><tr>
53+ <td >"banana"</td >
54+ <td >3</td >
55+ </tr >
56+ <tr >
57+ <td >"abracadabra"</td >
58+ <td >6</td >
59+ </tr >
60+ <tr >
61+ <td >"aaabbaccccabba"</td >
62+ <td >3</td >
63+ </tr >
64+ </tbody >
65+ </table>
66+ <hr >
67+
68+ <h5 >입출력 예 설명</h5 >
69+
70+ <p >입출력 예 #1<br >
71+ <code >s</code >="banana"인 경우 ba - na - na와 같이 분해됩니다.</p >
72+
73+ <p >입출력 예 #2<br >
74+ <code >s</code >="abracadabra"인 경우 ab - ra - ca - da - br - a와 같이 분해됩니다.</p >
75+
76+ <p >입출력 예 #3<br >
77+ <code >s</code >="aaabbaccccabba"인 경우 aaabbacc - ccab - ba와 같이 분해됩니다.</p >
78+
79+
80+ > 출처: 프로그래머스 코딩 테스트 연습, https://school.programmers.co.kr/learn/challenges
Original file line number Diff line number Diff line change 1+ function solution ( s ) {
2+ var answer = 0 ;
3+
4+ let point = 0 ;
5+ let x = s [ point ] ;
6+ let xCount = 0 ;
7+ let yCount = 0 ;
8+ let isComplete = false ;
9+
10+ for ( let i = 0 ; i < s . length ; i ++ ) {
11+ isComplete = false ;
12+ console . log ( x , s [ i ] )
13+ if ( x === s [ i ] ) {
14+ xCount ++
15+ } else {
16+ yCount ++
17+ }
18+ console . log ( 'xCount' , xCount , 'yCount' , yCount )
19+ if ( xCount === yCount ) {
20+ point = i + 1
21+ answer ++
22+ xCount = 0
23+ yCount = 0
24+ x = s [ point ]
25+ isComplete = true ;
26+ }
27+ }
28+
29+ if ( isComplete === false ) {
30+ answer ++
31+ }
32+
33+ return answer ;
34+ }
You can’t perform that action at this time.
0 commit comments