728x90
이해하기
너무 기본이지만 기울기와 평행 조건부터 다시 정리하였다.
처음에 잘못 생각하였던 점이 {{1, 4}, {9, 2}, {3, 8}, {11, 6}}일 때, 이중 for문을 돌며 {1, 4}와 {9, 2}의 기울기, {1, 4}와 {3, 8}의 기울기, {1, 4}와 {11, 6}의 기울기, ... {3, 8}과 {11, 6}의 기울기와 같이 가능한 경우의 수를 전부 Map에 저장하려고 했다는 점이다.
다시 문제를 살펴보면 {1, 4}와 {9, 2}를 잇는다면, 나머지 {3, 8}과 {11, 6}이 이어져야 하는데, 이 부분을 놓친 것이다.
문제풀이
class Solution {
public int solution(int[][] dots) {
int answer = 0;
for (int i = 0; i < dots.length - 1; i++) {
for (int j = i + 1; j < dots.length; j++) {
int num1 = i;
int num2 = j;
int num3 = -1;
int num4 = -1;
for (int k = 0; k < dots.length; k++) {
if (num3 == -1 && k != num1 && k != num2) {
num3 = k;
}
if (num3 != -1 && k != num1 && k != num2) {
num4 = k;
}
}
double cal1 = (dots[num1][1] - dots[num2][1] * 1.0) / (dots[num1][0] - dots[num2][0]);
double cal2 = (dots[num3][1] - dots[num4][1] * 1.0) / (dots[num3][0] - dots[num4][0]);
if (cal1 == cal2) {
answer = 1;
}
}
}
return answer;
}
}
코드가 너무 지저분하지만 인덱스 값을 가지고 4개의 점을 각각 2개씩 나누어 서로의 기울기를 비교한 후, 같은 경우가 있다면 answer에 1을 넣어주었다.
'JAVA > Coding Test Study' 카테고리의 다른 글
[Easy] LeetCode - no.88 Merge Sorted Array : Java (0) | 2024.10.13 |
---|---|
[Lv.2] 프로그래머스 - 주식가격 : Java (3) | 2024.09.01 |
[Lv.0] 프로그래머스 - 겹치는 선분의 길이 : Java (0) | 2024.06.21 |
[Lv.0] 프로그래머스 - 연속된 수의 합 : Java (0) | 2024.06.21 |
[프로그래머스] 코딩 입문 트레이닝 Lv.0 클리어! (0) | 2024.06.21 |