function solution(s) {
let answer = 0;
let first = "";
let same = 0;
let notSame = 0;
for(let i = 0; i < s.length; i++) {
if(first.length === 0) {
first = s[i];
same = 1;
continue;
}
if(first === s[i]) {
same++;
}else {
notSame++;
}
if(same === notSame) {
first = "";
same = 0;
notSame = 0;
answer++;
}
}
if(first.length > 0) {
answer++;
}
return answer;
}
문제를 해결하는 데 있어서 헷갈렸던 부분은 첫 문자와 같은 문자 수와 다른 문자 수가 같아진 순간이었다.
이때, 문자열을 나누고 남은 문자열 중에 첫 문자를 이용하여 다시 같은 문자와 다른 문자를 세 나가야 했다.
이렇게 했을 때, 마지막 남은 문자의 처리가 좀 헷갈렸다.
마지막 순간에 같은 문자 수와 다른 문자 수가 일치하여 딱 나누어지면 로직이 간단했는데, 나눠지지 않고 남은 문자열이 있는 경우의 처리가 문제였다.
결국 첫 번째 문자를 기준으로 로직을 나눈 것이 유효했다.
'코딩테스트 연습' 카테고리의 다른 글
프로그래머스 코딩테스트 연습 - 숫자 카드 나누기 JavaScript (0) | 2023.01.08 |
---|---|
프로그래머스 코딩테스트 연습 - 마법의 엘리베이터 JavaScript (0) | 2023.01.01 |
프로그래머스 코딩테스트 연습 - 가장 가까운 같은 글자 JavaScript (0) | 2022.12.24 |
프로그래머스 코딩테스트 연습 - 할인 행사 JavaScript (0) | 2022.12.17 |
프로그래머스 코딩테스트 연습 - 귤 고르기 JavaScript (0) | 2022.12.10 |