관리 메뉴

나만을 위한 블로그

[Algorithm] 백준 - 음계 (2920) (Kotlin) 본문

알고리즘 문제 풀이/백준

[Algorithm] 백준 - 음계 (2920) (Kotlin)

참깨빵위에참깨빵 2024. 6. 6. 20:52
728x90
반응형

 

입력받은 1~8까지의 숫자가 오름차순인지 내림차순인지, 아니면 둘 중 어디에도 해당하지 않는지 확인해서 각 경우 별 문자열을 출력한다면 풀 수 있긴 하다.

 

fun main() {
    val num = readln().split(" ").map { it.toInt() }
    val ascendingList = mutableListOf<Int>()
    for (i in 1 .. 8) {
        ascendingList.add(i)
    }
    val descendingList = mutableListOf<Int>()
    for (i in 8 downTo 1) {
        descendingList.add(i)
    }
    when (num) {
        ascendingList -> println("ascending")
        descendingList -> println("descending")
        else -> println("mixed")
    }
}

 

하지만 이런 식으로 푸는 건 의미가 없다. 실제로 입력받은 숫자들을 비교해서 오름차순인지 내림차순인지, 아니면 둘 다 해당하지 않는지 확인할 수 있어야 한다.

아래의 방식으로 풀어볼 수 있다.

 

fun main() {
    val numbers = readln().split(" ").map { it.toInt() }

    var isAscending = true
    var isDescending = true

    for (i in 0 until numbers.size - 1) {
        if (numbers[i] < numbers[i + 1]) {
            isDescending = false
        } else if (numbers[i] > numbers[i + 1]) {
            isAscending = false
        }
    }

    when {
        isAscending -> println("ascending")
        isDescending -> println("descending")
        else -> println("mixed")
    }
}

 

입력받는 부분은 동일하지만 boolean 변수 2개를 설정했다. 각각 반복문 종료 후 오름차순인지 내림차순인지 확인하기 위해 사용할 것이다.

이후 반복문으로 입력받은 숫자들의 리스트를 돌면서 앞의 인덱스, 뒤의 인덱스끼리 비교해서 알맞은 boolean 변수를 false로 설정한다.

반복문이 끝나면 boolean 변수에 따라 각각 알맞은 문자열을 출력하고 둘 다 false라면 숫자가 섞여 있는 것이니 mixed를 출력한다.

반응형
Comments