티스토리 뷰
https://school.programmers.co.kr/learn/courses/30/lessons/140108
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
function solution(s) {
const answer = []
const obj = { str: s[0], o: 0, x: 0 }
let temp = ""
for(let i = 0; i < s.length; i++) {
const curS = s[i]
temp += curS
obj.str === curS ? obj.o += 1 : obj.x += 1
if(obj.o === obj.x) {
answer.push(temp)
temp = ""
obj.str = s[i + 1]
obj.o = 0
obj.x = 0
}
}
obj.o > obj.x && answer.push(temp)
return answer.length
}
- 비교할 문자(str), 비교할 문자와 같은 문자의 개수(o), 다른 문자의 개수(x)를 담을 obj 객체 만듦
- 분리할 문자열 temp 만듦
- 주어진 s의 길이만큼 반복
- temp에 현재 문자(s[i]) 더함
- 비교할 문자(obj.str)와 현재 문자(s[i]) 비교
- 같으면 obj.o, 다르면 obj.x 값에 +1
- 두 횟수(obj.o, obj.x)가 같으면 문자열(temp) 분리 및 초기화
- answer에 분리할 문자열(temp)을 push
- 다음 문자를 비교할 문자(obj.str)에 담음
- 두 횟수(obj.o, obj.x) 0으로 초기화
- 두 횟수가 다른 상태에서 더 이상 읽을 글자가 없을 경우 (반복문이 종료되었는데도 obj.o가 큰 상태)
temp가 빈 문자열이 아닐 것 -> answer에 temp를 push - answer의 길이를 반환


'알고리즘 문제풀이 > 프로그래머스' 카테고리의 다른 글
| [프로그래머스] Lv.0 - 가장 가까운 같은 글자 (javascript) (0) | 2023.01.29 |
|---|---|
| [프로그래머스] Lv.0 - 숫자 짝꿍 (javascript) (0) | 2023.01.27 |
| [프로그래머스] Lv.0 - 대문자와 소문자 (javascript) (0) | 2023.01.25 |
| [프로그래머스] Lv.0 - 숫자 찾기 (javascript) (0) | 2023.01.24 |
| [프로그래머스] Lv.0 - 세균 증식 (javascript) (0) | 2023.01.23 |
댓글
