내가 싫어하는 문자열 문제
먼저 한 블럭을 분해하는 부분을 작성한다.
var x = s[0]; // x는 첫 문자
// 어차피 x와 같은 문자, 다른 문자의 갯수를 비교해야 하므로 count 하나로 퉁친다.
var count = 0;
for(i = 0; i < s.length; i++){
if(s[i] === x) count++;
else count--;
if(count === 0){ // 갯수가 같다면 한 블럭을 완성하고 종료
answer++;
break;
}
}
이제 이 코드를 적당히 반복하면 된다.
이 코드에서는 s[0]을 시작점으로 잡았지만, 한 블럭을 완성하면 그 다음 문자가 시작점이 되기 때문에 이부분을 수정한다.
while( ... ){
p = 0 // 현재 위치를 p로 저장
var x = s[p];
var count = 0;
for(i = 0; i < s.length; i++){
if(s[i] === x) count++;
else count--;
if(count === 0){
answer++;
p = i + 1; // 현재 위치는 마지막 위치에서 +1가 된다
break;
}
}
}
현재 위치를 p라는 변수로 저장하고, 한 블럭을 완성하면 현재 위치를 마지막 위치에 +1한다.
조건은 p가 s.length보다 커야하고, i가 모두 순회를 마쳤을 때 count가 0이 아닌경우를 예외처리한다.
function solution(s) {
var answer = 0;
var p = 0;
while(p < s.length){
var x = s[p];
var count = 0;
for(i = p; i < s.length; i++){
if(s[i] === x) count++;
else count--;
if(count === 0){
answer++;
p = i+1;
break;
}
}
if(count !== 0) {
answer++;
break;
}
}
return answer;
}
끗
'코딩연습' 카테고리의 다른 글
| (JavaScript) 햄버거 만들기 (0) | 2024.12.13 |
|---|---|
| (JavaScript) 대충 만든 자판 (0) | 2024.12.11 |
| (JavaScript) 체육복 (0) | 2024.12.10 |
| (JavaScript) 숫자 짝꿍 (0) | 2024.12.09 |
| (JavaScript) 옹알이(2) (0) | 2024.12.09 |