그리디 알고리즘

수뱀 ㅣ 2024. 12. 10. 00:18

 

https://www.acmicpc.net/problem/1439

난이도 실5

 

한참아래 힌트& 정답 있음

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0을 1로 바꿀때 소요횟수와

1을 0으로 바꿀때 소요횟수를 비교하여 더작은 걸 출력했다

fun main() {

    var list: MutableList<Int> = readln().map { it.toString().toInt() }.toMutableList()


    //모두 1로 바꿀때
    var toOne: Int = 0
    var index1Bool = true
    for (i in 0..list.size - 1) {
        if (list[i] == 0 && index1Bool) {
            toOne++
            index1Bool = false
        }
        if (list[i] == 1) {
            index1Bool = true
        }
    }

    //모두 0으로 바꿀때
    var toZero: Int = 0
    var index2Bool = true
    for (i in 0..list.size - 1) {
        if (list[i] == 1 && index2Bool) {
            toZero++
            index2Bool = false
        }
        if (list[i] == 0) {
            index2Bool = true
        }
    }

    //뭐가 더작은지
    if (toOne > toZero) {
        println(toZero)
    } else {
        println(toOne)
    }
}