"총 타일 개수의 약수들을 이용하면 올 수 있는 가로, 세로 길이를 알 수 있다."라고 적혀 있는 부분이 이해가 안되는데
설명해주시면 감사하겠습니다.
자바8 코드
import java.util.Scanner;
public class Main {
static int l, w;
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
l = sc.nextInt();
w = sc.nextInt();
int sum = l + w;
int sqrt = (int) Math.sqrt(sum);
for (int a = 3; a <= sqrt; a++) {
int b = sum / a;
if (b <= 2) {
continue;
}
if (a * b == sum) {
if (isSatify(a, b)) {
if (a > b) {
System.out.println(a + " " + b);
} else {
System.out.println(b + " " + a);
}
return;
}
}
}
}
public static boolean isSatify(int a, int b) {
int brown = b - 2;
int red = a * b;
brown = (a - 2) * brown;
red -= brown;
if (red == l && brown == w) {
return true;
}
return false;
}
}
코틀린 코드
import java.util.Scanner
import kotlin.math.sqrt
var l = 0
var w = 0
fun main(args: Array<String>) = with(Scanner(System.`in`)) {
l = nextInt()
w = nextInt()
val sum = l + w
val sqrt = sqrt(sum.toDouble()).toInt()
for (a in 3..sqrt) {
val b = sum / a
if (b <= 2) continue
if (a * b == sum) {
if (isSatify(a, b)) {
if (a > b) {
println("$a $b")
} else {
println("$b $a")
}
}
return
}
}
}
fun isSatify(a: Int, b: Int): Boolean {
var brown = b - 2
var red = a * b
brown *= (a - 2)
red -= brown
return red == l && brown == w
}
choiyoujun 3년 전
인터넷을 참고해서 문제를 풀어보는데( 백준 2858번 기숙사 바닥 :: 마이구미 :: 마이구미의 HelloWorld (tistory.com) ),
자바로 성공한 코드가 코틀린에서는 틀리다고 나옵니다.
자바 코드를 코틀린으로 똑같이 복붙해서 작성했는데, 어떤 부분에서 자바코드와 다른걸까요?
그리고 참고한 곳에서
"총 타일의 개수를 가질 수 있는 모든 경우를 구한다." 와
"총 타일 개수의 약수들을 이용하면 올 수 있는 가로, 세로 길이를 알 수 있다."라고 적혀 있는 부분이 이해가 안되는데
설명해주시면 감사하겠습니다.
자바8 코드
코틀린 코드