프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
이해하기
너무 기본이지만 기울기와 평행 조건부터 다시 정리하였다.
기울기 구하는 법 어렵지 않아요!
안녕하세요, 홍재룡수학학원입니다. 수평선 또는 수평면에 대한 기울어짐 정도를 나타내는 기울기! 기울기 ...
blog.naver.com
두 직선의 위치관계 - 평행, 일치, 수직
두 직선의 위치관계는 중학교 1학년 때 두 직선의 위치관계에서 공부했어요. 이때는 그냥 위치 관계의 종류에 대해서만 공부했죠. 평행, 일치, 수직, 한 점에서 만나는 경우요. 이 글에서는 직선
mathbang.net
처음에 잘못 생각하였던 점이 {{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 > 프로그래머스' 카테고리의 다른 글
[Lv.0] 프로그래머스 - 겹치는 선분의 길이 : Java (0) | 2024.06.21 |
---|---|
[Lv.0] 프로그래머스 - 연속된 수의 합 : Java (0) | 2024.06.21 |
[프로그래머스] 코딩 입문 트레이닝 Lv.0 클리어! (0) | 2024.06.21 |
[Lv.2] 프로그래머스 - 행렬 테두리 회전하기 : Java (0) | 2024.06.19 |
[Lv.0] 프로그래머스 - 특이한 정렬 : Java (0) | 2024.06.19 |