Kotlin/Kotlin 알고리즘

백준 1436번 영화감독 숌 Kotlin 구현해 보기

kimc 2023. 10. 7. 11:52
반응형

```

백준 1436번 영화감독 숌 Kotlin 구현해 보기

```

Kimc Kotlin Study

배워갈 내용

  1. 백준 1436번 풀이

문제 링크

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

 

1436번: 영화감독 숌

666은 종말을 나타내는 수라고 한다. 따라서, 많은 블록버스터 영화에서는 666이 들어간 제목을 많이 사용한다. 영화감독 숌은 세상의 종말 이라는 시리즈 영화의 감독이다. 조지 루카스는 스타워

www.acmicpc.net

문제 설명

백준 1436번 영화감독 숌은

난이도 실버 등급의 문제로서

 

설명

세상의 종말 시리즈 영화의 감독인 숌은 영화 제목을 만들기 위해 종말의 수를 사용합니다. 종말의 수는 적어도 3개 이상의 연속된 6을 포함하는 수입니다. 예를 들어, 666, 1666, 2666, 등이 종말의 수입니다. 숌은 N번째 영화의 제목을 만들려고 합니다. N이 주어질 때, N번째 영화의 제목에 들어갈 수를 출력하는 프로그램을 작성하면 됩니다
입력:
첫째 줄에 N이 주어집니다. (1 ≤ N ≤ 10,000)
출력:
N번째 영화의 제목에 들어갈 종말의 수를 출력합니다.


30분 정도 위에 링크를 방문하셔서 풀어보시고

안 풀리시는 경우에만 아래 해답을 봐주시면 감사하겠습니다.


코드 설명

 

입력을 받고
정해진 조건에 맞춰서 BruteForce로 풀었습니다

 

요즘에는 주석이나 설명 없이 코드로 설명하고자 노력 중입니다
만약 코드가 이해가 안 가시면 댓글 부탁드립니다

 

 

코드

fun main() {
    val inputDto = readInput()
    print(inputDto.findDoomNum())
}

data class InputDto(val N: Int) {
    fun findDoomNum(): Int {
        var movieTitleNum = 0
        var nthDoomNum = 0

        while (nthDoomNum < N) {
            movieTitleNum++
            if (movieTitleNum.contains666()) {
                nthDoomNum++
            }
        }
        return movieTitleNum
    }
}

fun Int.contains666(): Boolean {
    var temp = this
    while (temp > 0) {
        if (temp % 1000 == 666) {
            return true
        }
        temp /= 10
    }
    return false
}

fun readInput(): InputDto {
    val N = readLine()?.toIntOrNull() ?: 0
    return InputDto(N)
}

 

 

읽어주셔서 감사합니다

 

무엇인가 얻어가셨기를 바라며

 

오늘도 즐거운 코딩 하시길 바랍니다 ~ :)

 


 

반응형