[프로그래머스/자바] LV0 평행

Wuchang·2023년 1월 12일
0

코딩테스트

목록 보기
4/13

문제설명

입출력 예

풀이 및 리뷰

주어진 네개의 좌표를 이어 두개의 선분으로 만들고, 두 선분이 평행한지 알아보는 문제. 선분의 기울기가 같으면 평행한 것이므로, 만들 수 있는 모든 경우에서의 기울기를 새로 만든 배열에 넣어주고, 각각의 원소에서 같은 기울기가 있는지 확인하는 방식으로 풀었다.

import java.util.ArrayList;

class Solution {
    public int solution(int[][] dots) {
    	int answer = 0;
        //기울기가 항상 정수로 나오지 않기 때문에 int가 아닌 double로 ArrayList 구현
    	ArrayList<Double> list = new ArrayList<>();	
    	
        //모든 좌표에서 구하는 기울기를 비교하기 위한 이중for문
    	for(int i=0; i<dots.length-1; i++) {
    		for(int j=i+1; j<dots.length; j++) {
    			if((dots[i][1]-dots[j][1]) !=0 && (dots[i][0]-dots[j][0])!=0){
                // x/y 로 기울기 구해 list에 넣어준다
    			list.add((double)(dots[i][1]-dots[j][1])/(dots[i][0]-dots[j][0]));
    			}
    		}
    	}
    	
        //중복을 제거해주는 distinct 메서드사용. 평행한 선분이 있을 경우 중복되어 if문 진행된다.
    	if(list.size() != list.stream().distinct().count()) {
    		answer = 1;
    	}
    	return answer;
    }
}
profile
우창의 개발일지🐈

0개의 댓글