1. 문제
https://www.acmicpc.net/problem/1485
1485번: 정사각형
첫째 줄에 테스트 케이스의 개수 T가 주어진다. 각 테스트 케이스는 네 줄로 이루어져 있으며, 점의 좌표가 한 줄에 하나씩 주어진다. 점의 좌표는 -100,000보다 크거나 같고, 100,000보다 작거나 같
www.acmicpc.net
2. 풀이
import sys
input = sys.stdin.readline
# t : 테스트케이스 수
t = int(input())
t_l = [[] for i in range(t)]
for i in range(t):
for j in range(4):
t_l[i].append(list(map(int, input().split())))
for i in t_l:
dist = []
for k1, v1 in enumerate(i):
for j in i[k1+1:]:
dist.append(((v1[0] - j[0]) ** 2) + ((v1[1] - j[1]) ** 2))
dist.sort()
if dist[0] == dist[1] and dist[1] == dist[2] and dist[2] == dist[3] and dist[4] == dist[5]:
print(1)
else:
print(0)
3. 후기
- 처음 문제를 해결하려던 방식은 각 점에서 다른 세 점의 길이를 모두 측정하여 리스트에 담아두고, 정렬한 후 나온 4개의 리스트가 같은지를 비교하는 방식으로 했다.
계속되는 '틀렸습니다.'에 방식을 바꾸게 됐고, 위와 같은 각 3변의 길이와 2개의 대각선 길이를 측정한 후 변끼리, 대각선끼리 같은지 확인하는 방식으로 바꾸어 해결하였다.
'알고리즘 공부 > 백준' 카테고리의 다른 글
(Python)백준 코딩테스트 연습 - 침투 계획 세우기(1606) (0) | 2023.02.21 |
---|---|
(Python)백준 코딩테스트 연습 - 비숍(1560) (0) | 2023.02.19 |
(Python)백준 코딩테스트 연습 - 수리공 항승(1449) (0) | 2023.02.13 |
(Python)백준 코딩테스트 연습 - 삼각형 만들기(1448) (0) | 2023.02.13 |
(Python)백준 코딩테스트 연습 - 시리얼 번호(1431) (0) | 2023.02.10 |