Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- Lv2
- 두원사이의정수쌍
- 정렬
- 백준알고리즘
- JS
- c++
- DP
- solved.ac플래티넘
- 최소스패닝트리
- 스택
- 알고리즘 문제풀이
- 프로그래머스
- 비트마스크
- 지도 여러개
- div2개
- Lv3
- 2023카카오블라인드코테
- 알고리즘문제풀이
- [pccp 기출문제]
- solved.ac골드
- React.StrictMode
- 5강클로저
- JS스터디
- 이중지도
- 과제진행하기
- pccp기출문제
- 코어자바스크립트
- 백준 알고리즘
- 타겟넘버
- 우박수열정적분
Archives
- Today
- Total
호지
[프로그래머스] 문자열 나누기 문제풀이 JS 본문
이 문제는 문자열을 나누지 않아도 개수만 세면 되는 문제다.
따라서 주어진 s를 한번 탐색하면 원하는 결과를 얻을수있게된다.
초기의 x값은 s의 첫번째 문자고, x의 개수와 x가 아닌 문자의 개수를 셀 변수를 만든다.
그 후 주어진 s를 탐색하면서,
해당위치의 문자가 x랑 같으면 cntX를 1증가, 아니면 cntNotX를 1증가한다.
이때 cntX와 cntNotX의 값이 같으면 문자열이 나눠졌다고 생각하고,
정답값을 1증가하고, x는 다음 문자로 변경하고 cntX와 cntNot를 초기화한다.
이와 같이 반복했을 때,
마지막 위치의 문자는 그것을 포함했을때, 문자열이 나눠지거나 아니면 문자열이 남거나
결과적으로 answer이 1증가하게 되므로 마지막 문자는 확인하지 않고 마지막에 answer을 1증가한다.
function solution(s) {
let x = s[0];
let cntX = 1,
cntNotX = 0;
let answer = 0;
for (let i = 1; i < s.length - 1; i++) {
s[i] === x ? cntX++ : cntNotX++;
if (cntX === cntNotX) {
answer++;
x = s[i + 1];
cntX = 0;
cntNotX = 0;
}
}
return answer + 1;
}
'알고리즘 > 프로그래머스' 카테고리의 다른 글
[프로그래머스] 기사단원의 무기 문제풀이 JS (0) | 2023.07.28 |
---|---|
[프로그래머스] 명예의 전당(1) 문제풀이 JS (0) | 2023.07.26 |
[프로그래머스] 가장 가까운 같은 글자 문제풀이 JS (0) | 2023.07.25 |
[프로그래머스] 개인정보 수집 유효기간 문제풀이 JS (0) | 2023.07.23 |
[프로그래머스] 타겟 넘버 문제풀이 JS (0) | 2023.07.20 |
Comments