관리 메뉴

나만을 위한 블로그

[Algorithm] 프로그래머스 - 컨트롤 제트 (Kotlin) 본문

알고리즘 문제 풀이/프로그래머스

[Algorithm] 프로그래머스 - 컨트롤 제트 (Kotlin)

참깨빵위에참깨빵_ 2022. 12. 30. 16:16
728x90
반응형
숫자와 "Z"가 공백으로 구분돼 담긴 문자열이 주어진다. 문자열의 숫자를 차례대로 더한다
이 때 "Z"가 나오면 바로 전에 더했던 숫자를 뺀다는 뜻이다. 숫자와 "Z"로 이뤄진 문자열 s가 주어질 때, 구한 값을 리턴하는 solution()을 완성하라

 

 

"Z"가 있는 인덱스와 "Z" 앞 요소의 인덱스를 제외한 나머지 숫자값들의 합을 구하면 되는데, 이상한 곳에서 삽질하느라 풀지 못했다.

 

class Solution {
    fun solution(s: String): Int {
        val list = s.split(" ").toMutableList()
        var sum = 0
        while (list.contains("Z")) {
            list.removeAt(list.indexOf("Z") - 1)
            list.removeAt(list.indexOf("Z"))
        }
        for (i in list.indices) sum += list[i].toInt()
        return sum
    }
}

 

또는 Stack을 이용해서 풀 수도 있다. 프로그래머스에 제출 시 import문을 넣어주지 않으면 런타임 에러로 오류처리되기 때문에 주의해야 한다.

 

import java.util.*

class Solution {
    fun solution(s: String): Int {
        var answer = 0
        val stack = Stack<Int>()

        for (w in s.split(" ".toRegex())) {
            if (w == "Z") {
                stack.pop()
            } else {
                stack.push(w.toInt())
            }
        }
        for (i in stack) {
            answer += i
        }
        return answer
    }
}
반응형
Comments