[백준] 정사각형 (1485)(kotlin)

문제 설명

백준 1485번 문제 링크

입력 및 출력

» 입력

첫째 줄에 테스트 케이스의 개수 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)
    }
}

// 사각형의 네 변의 길이가 모두 같고, 두 대각선의 길이가 같으면 정사각형임