TIL #28

loci·2024년 5월 28일
0

TIL

목록 보기
26/103

문자열 나누기
문제를 잘 이해해야했던 문제

처음에 내가 생각한 문제풀이와 입출력 예제가 달라서 고민해보니 문자열을 왼쪽에서 오른쪽으로 읽어나갈때 첫번째 문자를 포함하지 않아서 다르게 나온 거였음


나의 코드

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 -> "" ( "" 가되면 카운트해주고 다음 문자 저장)

profile
편리한 개발자

0개의 댓글