백준 1485번 - 정사각형
백준 1485번 바로가기 첫 번째 시도 # 입력 import sys read = sys.stdin.readline T = int(read().strip()) # 처리 for _ in range(T): d = [] for _ in range(4): x,y=map(int,read().split()) d.append((x,y)) d.sort() if d[0][0] == d[1][0] and d[2][0] == d[3][0] and d[0][1] == d[2][1] and d[1][1] == d[3][1]: print(1) else: print(0) 최종 제출 # 입력 import sys read = sys.stdin.readline T = int(read().strip()) # 처리 def l(a,b): return (a[0]-b[0])**2 + (a[1]-b[1])**2 for _ in range(T): d = [] for _ in range(4): x,y=map(int,read().split()) d.append((x,y)) length = [] for i in range(4): for j in range(i+1,4): length.append(l(d[i],d[j])) if len(set(length)) == 2: print(1) else: print(0) CODE REVIEW 첫 번째 시도에서는 정사각형이 똑바로 놓여있는 경우만 고려해서, 틀!렸!다! 정사각형의 각 변이 x,y축과 평행하지 않는 경우도 있기 때문에 다른 방법을 생각했다. 정사각형의 결정 조건은 “네 변의 길이가 동일하고, 두 대각선의 길이가 같다.“인데, 이 조건대로 길이를 확인해보았다. 점과 점 사이의 거리를 다 구하고, set()안에 집어 넣어준 뒤에 길이의 종류가 2개면 정사각형, 그 외에는 정사각형이 아님! 이라는 논리로 문제를 해결했다.