티스토리 뷰
2022.12.06
프로그래머스 스쿨 Lv01. 문자열 나누기
🚀 문제 파악
*문자열의 첫 글자 = x
*x와 x가 아닌 글자가 나온 횟수를 센다
*두 횟수가 동일한 순간 멈추고, 지금까지 읽은 문자열을 분리한다
*남은 문자열에 대해 이 과정을 반복한다
*남은 부분이 없을 때 종료한다
*이 과정을 반복했을 때, 분해한 문자열의 개수를 return 한다
🚀 문제 해결
1. 첫번째 문자를 stack에 넣는다.
2. 문자열 s에서 첫 번째 문자를 제거한다.
3. 그 다음 문자를 stack[0]과 비교한다
*그 다음 문자와 stack[0] 이 동일하면 stack에 push
*그 다음 문자와 stack[0] 이 다르면 stack에서 pop
4. stack의 길이가 0이 될 때마다 answer에 +1 한다
5. 최종 문자열 s의 길이가 0이 아닌경우 answer에 +1 한다
*정리하면
**stack이 비어있는 경우 첫번째 문자이므로 stack에 push 한다
**stack이 비어있지 않은 경우 stack[0]과 비교해서 같은 문자일 때 push 한다
**stack이 비어있지 않은 경우 stack[0]과 비교해서 다른 문자일 때 shift 한다
**stack이 비어있는 경우는 x와 x가 아닌 경우의 횟수가 동일하므로 answer에 +1 한다
🚀 통과 코드
function solution(s) {
var answer = 0;
var stack = [];
while(s.length > 1){
var now = s.substr(0, 1);
s = s.slice(1);
if(stack[0] == now || stack.length == 0) stack.push(now);
else stack.shift();
if(stack.length == 0) answer+=1;
}
return s.length == 1 ? answer+=1 : answer;
}
'🔥 해보자고 🔥' 카테고리의 다른 글
프로그래머스 스쿨 Lv01. 콜라 문제 (0) | 2022.12.01 |
---|---|
프로그래머스 스쿨 Lv01. 성격유형검사하기 (0) | 2022.11.30 |
프로그래머스 스쿨 Lv01. 햄버거 만들기 (0) | 2022.11.29 |
프로그래머스 스쿨 Lv01. 명예의 전당(1) (0) | 2022.11.28 |
프로그래머스 스쿨 Lv01. 푸드 파이트 대회 (0) | 2022.11.25 |
댓글