문자열 나누기
문제를 잘 이해해야했던 문제
처음에 내가 생각한 문제풀이와 입출력 예제가 달라서 고민해보니 문자열을 왼쪽에서 오른쪽으로 읽어나갈때 첫번째 문자를 포함하지 않아서 다르게 나온 거였음
나의 코드
class Solution {
fun solution(s: String): Int {
var answer: Int = 0
var first = s.first()
var count1 = 0
var count2 = 0
for(i in s){
if(i == first){
count1++
} else {
count2++
}
if(count1 + count2 >= s.length){
answer++
break
} else if(count1 == count2){
answer++
first = s[count1+count2]
}
}
return answer
}
}
다른사람 풀이
class Solution {
fun solution(s: String): Int {
var answer: Int = 0
val stack = mutableListOf<Char>()
s.forEach {
if (stack.isEmpty()) {
answer++
stack.add(it)
} else if (stack.first() == it) {
stack.add(it)
} else {
stack.removeFirst()
}
}
return answer
}
}
빈리스트를 만들고 다음글자와 같으면 다음글자를 넣고 다르면 현재글자를 제거해준다.
입력 : bbaa
b -> bb -> b -> "" ( "" 가되면 카운트해주고 다음 문자 저장)