[Kotlin/프로그래머스] 코딩테스트 연습 > 연습문제 > 문자열 나누기

👀 문제

https://school.programmers.co.kr/learn/courses/30/lessons/140108

👊 도전

1. 설계

  1. 문제 설명대로 구현

2. 구현

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
class Solution {
fun solution(s: String): Int {
var answer: Int = 0
var xCount = 0
var yCount = 0
var x = s[0]
var isClear = false
s.forEachIndexed { index, c ->
if (isClear) {
x = c
isClear = false
}
if (c == x) {
xCount++
} else {
yCount ++
}
if (xCount == yCount || index == s.lastIndex) {
answer++
isClear = true
}
}
return answer
}
}

3. 결과

실행결과 🤟 성공 🤟

4. 설명

  1. x, y를 두고 개수를 비교하여 answer를 늘린다
    • 문제 설명에서 분리한다는 말이 있어 substring을 써야 하는 문제인가 했는데, 분리한 문자열이란 다음 인덱스부터 문자열 끝까지를 의미하기 때문에 그럴 필요는 없다.
    • xCount, yCount를 두어 x와 같은 char이 나오면 xCount++, 다른 문자라면 yCount를 ++한다.
    • xCount == yCount이면 answer++하고, 다음 순회에서 x가 해당 값으로 갱신되어야 하기 때문에 isClear라는 변수를 두었다.
    • answer++하는 케이스는 문자열 끝일 경우도 해당되므로 조건문에 추가한다.

👏 해결 완료!