문제
답안
function solution(s) {
let x = 0;
let countX = 0;
let answer = [];
// 0번째 글자와 i번째 글자가 같다면 countX를 더해준다.
// 다르다면 countX를 빼주고, 만약 countX가 0이라면, 0부터 i까지 글자를 answer에 넣어준다.
// 넣어주고, x는 i+1로 바꿔준 뒤에 다시 for문에 진입한다.
for(let i = 0; i < s.length; i++){
if(s[i] === s[x])countX++;
else countX--;
if(countX === 0){
answer.push(s.substring(x,i+1));
x = i+1;
}
}
// answer의 길이와 s의 길이가 같다면, answer의 길이를 출력하고, 다르다면 answer에 1을 더한 값을 출력해준다.
// 1을 더하는 것은, 남은 글자들을 처리하는 것이다.(입출력 예 2 번의 마지막 글자인 a와 같은 경우)
return answer.join('').length === s.length ? answer.length : answer.length+1;
}
후기
countX가 0이 되는 순간 바로 answer에 문자열을 자른 값을 넣는 방법이 쉽게 떠오르지 않아 고민했다.
728x90
'자바스크립트 코딩테스트' 카테고리의 다른 글
프로그래머스 Level 1 - 숫자 짝꿍 (Javascript) (0) | 2023.11.26 |
---|---|
프로그래머스 Level 1 - 완주하지 못한 선수 (Javascript) (1) | 2023.11.25 |
프로그래머스 Level 1 - 햄버거 만들기 (Javascript) (3) | 2023.11.23 |
프로그래머스 Level 1 - 바탕화면 정리 (Javascript) (2) | 2023.11.22 |
프로그래머스 Level 1 - 크레인 인형뽑기 게임 (Javascript) (3) | 2023.11.21 |