[백준] 3의 배수 (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")