[백준] Viva la Diferencia (4084)(kotlin)
문제 설명
입력 및 출력
» 입력
입력은 여러 개의 테스트 케이스로 이루어져 있다. 각 테스트 케이스는 한 줄로 이루어져 있고, a, b, c, d가 순서대로 주어진다. 입력의 마지막 줄에는 0이 4개 주어진다. (1 ≤ a,b,c,d ≤ 2,000,000,000)
» 출력
각 테스트 케이스에 대해서, 수열이 몇 번 만에 수렴하는지 출력한다.
예제 입출력(테스트케이스)
입력 | 출력 |
---|---|
1 3 5 9 4 3 2 1 1 1 1 1 0 0 0 0 |
6 4 0 |
문제 힌트
만약 네 정수가 2n보다 작다면, 3*n번 이내에 수렴한다.
문제 풀이1
import java.util.Scanner
import kotlin.math.abs
fun main(args: Array<String>) = with(Scanner(System.`in`)) {
while(readLine()!!
.split(" ")
.map { it.toLong() }
.toMutableList()
.also { int ->
var count = 0L
while (int.count { it == int[0] } != 4) {
count++
val a = abs(int[0] - int[1])
val b = abs(int[1] - int[2])
val c = abs(int[2] - int[3])
val d = abs(int[3] - int[0])
int[0] = a
int[1] = b
int[2] = c
int[3] = d
}
if (int.count { it == 0L } != 4) println(count)
}
.count { it == 0L } != 4
) {}
}