- c++
- cloud_computing
- Personal_Study
- Artificial_Intelligence
- Database_Design
- pytorch
- programmers
- C
- Operating_System
- SingleProject
- Linux
- 리눅스마스터2급
- Android
- 자격증
- Unix_System
- Baekjoon
- tensorflow
- Java
- 오블완
- Python
- app
- Algorithm
- 2023_1st_Semester
- 티스토리챌린지
- Univ._Study
- codingTest
- datastructure
- Image_classification
- study
- Kubernetes
코딩 기록 저장소
[백준/Java] 1485번: 정사각형 본문
문제 정보
제목 : 정사각형
번호 : 1485번
사용 언어 : Java
문제 링크
https://www.acmicpc.net/problem/1485
1485번: 정사각형
첫째 줄에 테스트 케이스의 개수 T가 주어진다. 각 테스트 케이스는 네 줄로 이루어져 있으며, 점의 좌표가 한 줄에 하나씩 주어진다. 점의 좌표는 -100,000보다 크거나 같고, 100,000보다 작거나 같
www.acmicpc.net
시간 제한 | 메모리 제한 |
1초 | 512MB |
문제
네 점이 주어졌을 때, 네 점을 이용해 정사각형을 만들 수 있는지 없는지를 구하는 프로그램을 작성하시오.
입력
첫째 줄에 테스트 케이스의 개수 T가 주어진다. 각 테스트 케이스는 네 줄로 이루어져 있으며, 점의 좌표가 한 줄에 하나씩 주어진다. 점의 좌표는 -100,000보다 크거나 같고, 100,000보다 작거나 같은 정수이다. 같은 점이 두 번 이상 주어지지 않는다.
출력
각 테스트 케이스마다 입력으로 주어진 네 점을 이용해서 정사각형을 만들 수 있으면 1을, 없으면 0을 출력한다.
입출력 예제

나의 풀이
먼저 main()에서는 Scanner객체를 생성하여 count에 몇개의 사각형을 입력받을지 정수형으로 받아 저장합니다. count만큼 반복하는 for루프를 생성하여 sq라는 2차원 배열을 선언한 후, 4번 반복하는 for루프로 각각 좌표값을 정수형으로 입력받아 저장합니다. 내부 반복이 끝나면 sq를 인자로 하여 sss()함수를 실행합니다. sss()는 직접 정의한 함수로 이중 for루프를 이용해 좌표값끼리의 거리를 구한 후 d라는 Arraylist에 저장합니다. 모든 거리를 저장했다면 대각선의 길이가 네 변의 길이 보다 클 것이므로 Arraylist를 정렬합니다. Objects.equals()함수를 이용해 두 대각선의 길이가 같고, 네 변의 길이가 같다면 1을, 같지 않다면 0을 출력합니다.
코드
import java.util.*;
public class Main {
public static void sss(int[][] sq) {
List<Double> arr = new ArrayList<>();
for(int i = 0 ; i < 4; i ++) {
for(int j = 0; j<i; j++) {
double d;
int xd,yd;
yd = (int)Math.pow((sq[i][1]-sq[j][1]),2);
xd = (int)Math.pow((sq[i][0]-sq[j][0]),2);
d = Math.sqrt(yd+xd);
arr.add(d);
}
}
arr.sort(Comparator.reverseOrder());
if(Objects.equals(arr.get(0), arr.get(1)) && Objects.equals(arr.get(2), arr.get(3)) && Objects.equals(arr.get(2), arr.get(4)) && Objects.equals(arr.get(2), arr.get(5)) ) {
System.out.println("1");
} else {
System.out.println("0");
}
}
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int count = sc.nextInt();
for( int i = 0; i < count; i ++) {
int[][] sq = new int[4][2];
for( int j = 0 ; j < 4; j++) {
sq[j][0] = sc.nextInt();
sq[j][1] = sc.nextInt();
}
sss(sq);
}
sc.close();
}
}
'백준 > 기타' 카테고리의 다른 글
[백준/Java] 1362번: 펫 (0) | 2023.05.12 |
---|---|
[백준/Java] 1449번: 수리공 항승 (0) | 2023.05.09 |
[백준/Java] 2953번: 나는 요리사다 (0) | 2023.05.09 |
[백준/Java] 5596번: 시험 점수 (0) | 2023.04.10 |
[백준/Java] 16430번: 제리와 톰 (0) | 2023.04.03 |