반응형
점 네 개의 좌표를 담은 이차원 배열 dots가 다음과 같이 매개변수로 주어집니다. [[x1, y1], [x2, y2], [x3, y3], [x4, y4]] 주어진 네 개의 점을 두 개씩 이었을 때, 두 직선이 평행이 되는 경우가 있으면 1을 없으면 0을 return 하도록 solution 함수를 완성해보세요.
import java.util.Arrays;
class Solution {
public int solution(int[][] dots) {
// 평행 하다는건 기울기 가 같다는거
// 나올수 있는 선분의 개수는 6개
// 일단 6개의 기울기 변수를 만들어보자
//[a-b, c-d],[a-c, b-d],[a-d, b-c] 이런거만 된다네
//힌트를 얻음 아니문제가 좀 ;;
int answer = 0;
double[] angle =new double[6];
angle[0]=getAngle(dots[0],dots[1]);
angle[1]=getAngle(dots[0],dots[2]);
angle[2]=getAngle(dots[0],dots[3]);
angle[3]=getAngle(dots[1],dots[2]);
angle[4]=getAngle(dots[1],dots[3]);
angle[5]=getAngle(dots[2],dots[3]);
//결국 0,5 번을 비교 , 1,4번을 비교 2, 3번을 비교 하면됨
if(angle[0]==angle[5] || angle[1]==angle[4] || angle[2]==angle[3]) {
answer=1;
}
System.out.println(Arrays.toString(angle));
return answer;
}
public double getAngle(int[] a,int[] b){
return (double)(a[1]-b[1])/(double)(a[0]-b[0]);
}
}
아 문제 설명이 좀 헷갈렸다. 2개를 이어서 직선이 나오는 경우 6가지를 다비교해주는지 알았는데
그게 아니고 4 개 좌표중 2개씩 이어서 한번 비교해주고 다시 2개씩 이어서 비교해줘서
총 3번만 비교해주면 되는거였다.
암튼 그러고 풀이는 간단하게 기울기를 구하는 함수만 따로 만들어주어서 기울기 배열을 만들어주고
if 문으로 비교해주면 끝이다 .
반응형
'자바 알고리즘 문제' 카테고리의 다른 글
문자열 정렬하기 (1) (0) | 2024.04.20 |
---|---|
정수를 나선형으로 배치하기 (0) | 2024.04.16 |
겹치는 선분의 길이 (10번 테스트만 실패) 도와주실분? (0) | 2024.04.12 |
주사위 게임 3 (0) | 2024.04.11 |
안전지대 (0) | 2024.04.09 |