ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [백준][Kotlin]1541번 잃어버린 괄호
    백준 2023. 3. 21. 21:57
    728x90

    해당 문제의 주요 포인트는 -의 존재 여부를 파악하는 것 입니다.

    문제를 잘보면 괄호를 1번만 쳐서 식을 완성하라는 말이 없기 때문에 -가 나오기 전까지는 해당 양수를 더합니다.

    그리고 - 가 나온 시점부터는 결과값에서 해당 양수를 빼주면 됩니다.

    왜냐하면 -가 나온 시점부터는 괄호를 통해서 모든 수를 빼는 형식으로 만들 수 있기 때문입니다.

    ex) 55-50+40+30-20-20 = 35

    -> 55-(50+40+30)-(20)-(20) = -105

     

    하기는 제가 작성한 코드와 제출 결과 입니다.

    import java.io.BufferedReader
    import java.io.BufferedWriter
    import java.io.InputStreamReader
    import java.io.OutputStreamWriter
    import java.util.*
    
    
    fun main() {
        val br = BufferedReader(InputStreamReader(System.`in`))
        //var bw = BufferedWriter(OutputStreamWriter(System.out))
        var st = StringTokenizer(br.readLine())
        var N = st.nextToken().toString()
    
        var numList = ArrayList<String>()
        var temp = ""
        N.forEach {
            if(it == '+'){
                if(temp!=""){
                    numList.add(temp)
                    temp = ""
                }
                numList.add("+")
            }
            if(it == '-'){
                if(temp!=""){
                    numList.add(temp)
                    temp = ""
                }
                numList.add("-")
            }
            if(it in ('0' .. '9')){
                temp += it.toString()
            }
        }
        if(temp != "") numList.add(temp)
    
        var result = 0
        var check = true // true 일때 plus 값 증가
        for(i in 0 .. numList.size-1){
            if(numList[i] == "-") {
                check = false
                continue
            }
            if(numList[i] == "+") continue
            if(check) {
                result += numList[i].toInt()
            } else {
                result -= numList[i].toInt()
            }
        }
        println(result)
    
        //bw.flush()
        //bw.close()
    }

Designed by Tistory.