728x90
프로그래머스
SW개발자를 위한 평가, 교육, 채용까지 Total Solution을 제공하는 개발자 성장을 위한 베이스캠프
programmers.co.kr
풀이
조합코드를 짜서 부분집합을 만들어줬다.
깊은 복사와 얕은 복사 때문에 시간을 잡아먹은 문제
전체코드
import java.io.*;
import java.util.*;
class Solution {
static HashMap<int[], Integer> map = new HashMap<>();
public int solution(int[][] dots) {
for(int i=0; i<dots.length/2; i++){
boolean visited[] = new boolean[dots.length];
int tmp[] = new int[dots.length];
visited[i] = true;
tmp[0] = i;
Combi(1, i, tmp, dots, visited);
}
int answer = 0;
for(int[] key : map.keySet()){
double firstX = dots[key[0]][0] - dots[key[1]][0];
double firstY = dots[key[0]][1] - dots[key[1]][1];
double secondX = dots[key[2]][0] - dots[key[3]][0];
double secondY = dots[key[2]][1] - dots[key[3]][1];
double first = firstY / firstX;
double second = secondY / secondX;
if(first == second){
answer++;
}
if(answer >= 2){
answer = 1;
}
}
return answer;
}
static void Combi(int depth, int idx, int[] tmp, int[][] dots, boolean[] visited){
if(depth == 4){
int arr[] = tmp.clone();
map.put(arr, 1);
return;
}
for(int i=0; i<dots.length; i++){
if(!visited[i]){
tmp[depth] = i;
visited[i] = true;
Combi(depth+1, i, tmp, dots, visited);
visited[i] = false;
}
}
}
}
728x90
'코딩테스트 > Algorithm' 카테고리의 다른 글
[프로그래머스] PCCP 모의고사 1번. 외톨이 알파벳 (JAVA) (0) | 2024.11.24 |
---|---|
[Programmers] PCCP 기출문제 충돌위험 찾기 (JAVA) (0) | 2024.11.21 |
[Programmesr] 모의고사 (JAVA) (0) | 2024.11.11 |
[Programmers] 최대공약수와 최소공배수 (JAVA) (0) | 2024.11.10 |
[Programmers] 예산 (JAVA) (0) | 2024.11.10 |