[백준] 3의 배수 (1769)

문제 설명

백준 1769번 문제 링크

입력 및 출력

» 입력

첫째 줄에 큰 자연수 X가 주어진다. X는 1,000,000자리 이하의 수이다.

» 출력

첫째 줄에 문제 변환의 과정을 몇 번 거쳤는지를 출력한다. 이 수는 음이 아닌 정수가 되어야 한다. 둘째 줄에는 주어진 수가 3의 배수이면 YES, 아니면 NO를 출력한다.

예제 입출력(테스트케이스)

입력 출력
1234567 3
NO

문제 힌트

1234567 -> 28 -> 10 -> 1 (NO)

문제 풀이 (KOTLIN)

fun main(args: Array<String>) = with(System.`in`.bufferedReader()) {
    var count = 0
    var num = readLine().map { it.toInt() - 48 }

    while (num.size != 1) {
        count++
        num = num.sum().toString().map { it.toInt() - 48 }
    }

    println(count)
    println(
        when(num[0]) {
            3,6,9 -> "YES"
            else -> "NO"
        }
    )
}

문제 풀이 (SWIFT)

func isMultipliesOf3 (_ candidate: String) -> Bool {
    if candidate.count < 2 {
        if Int(candidate)! % 3 == 0 { return true }
        else { return false }
    }
    
    let num = String(candidate
                        .map( {Int(String($0))!} )
                        .reduce(0, { (sum: Int, num: Int) -> Int in
        return sum + num
        }))
    
    count += 1
    return isMultipliesOf3(num)
}

var count = 0
let is3 = isMultipliesOf3(readLine()!)
print(count)
print(is3 ? "YES" : "NO")

문제 풀이 (SWIFT)

func isMultipliesOf3 (_ candidate: String) -> Bool {
    if candidate.count < 2 {
        if Int(candidate)! % 3 == 0 { return true }
        else { return false }
    }
    
    count += 1
    return isMultipliesOf3(
        String(
            candidate.map{ Int(String($0))! }
                .reduce(0, +)
        )
    )
    
}

var count = 0
let is3 = isMultipliesOf3(readLine()!)
print(count)
print(is3 ? "YES" : "NO")

태그:

카테고리:

업데이트: