[백준] 정사각형 (1485)(kotlin)
문제 설명
입력 및 출력
» 입력
첫째 줄에 테스트 케이스의 개수 T가 주어진다. 각 테스트 케이스는 네 줄로 이루어져 있으며, 점의 좌표가 한 줄에 하나씩 주어진다. 점의 좌표는 -100,000보다 크거나 같고, 100,000보다 작거나 같은 정수이다. 같은 점이 두 번 이상 주어지지 않는다.
» 출력
각 테스트 케이스마다 입력으로 주어진 네 점을 이용해서 정사각형을 만들 수 있으면 1을, 없으면 0을 출력한다.
예제 입출력(테스트케이스)
입력 | 출력 |
---|---|
2 1 1 1 2 2 1 2 2 2 2 3 3 4 4 5 5 |
1 0 |
문제 풀이1
import java.util.Scanner
fun main(args: Array<String>) = with(Scanner(System.`in`)) {
repeat(nextInt()) {
val x = mutableListOf<Int>()
val y = mutableListOf<Int>()
val l = mutableListOf<Int>()
repeat(4) {
x.add(nextInt())
y.add(nextInt())
}
for (i in 0 until 4) for (j in i + 1 until 4) {
l.add((x[i] - x[j]) * (x[i] - x[j]) + (y[i] - y[j]) * (y[i] - y[j]))
}
l.sort()
//정사각형일 경우,
//구한 길이를 오름차순으로 정렬 했을 때
//앞의 4개는 각각 (동일한) 정사각형 한 변의 길이, 뒤에 2개는 (동일한) 정사각형 각 대각선의 길이
if (l[0] == l[1] && l[1] == l[2] && l[2] == l[3] && l[4] == l[5])
println(1)
else
println(0)
}
}
// 사각형의 네 변의 길이가 모두 같고, 두 대각선의 길이가 같으면 정사각형임