728x90
반응형
https://school.programmers.co.kr/learn/courses/30/lessons/120875
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr

문제 푼 코드
package programmers.pr2023.Lv0.March;
public class Lv0_평행_20230315 {
public static void main(String[] args) {
int[][] dots = {{1, 4}, {9, 2}, {3, 8}, {11, 6}};
Solution s = new Solution();
System.out.println(s.solution(dots));
}
static class Solution {
// 직선의 기울기는 x의 변화값과 y의 변화값(y/x) 즉, y1-y2 /x1-x2
// 직선의 평행 조건 : 기울기가 같되 y절편이 달라야 한다. (기울기가 다를 경우 or y절편이 같을 경우 -> 무조건 만나게 된다. 기울기는 같되 y절편도 같을 경우 -> 두 직선은 일치한다.)
public int solution(int[][] dots) {
int answer = 0;
if(findSlope(dots[0], dots[1]) == findSlope(dots[2], dots[3])) {
answer++;
} else if(findSlope(dots[0], dots[2]) == findSlope(dots[1], dots[3])) {
answer++;
} else if(findSlope(dots[0], dots[3]) == findSlope(dots[1], dots[2])) {
answer++;
}
return answer;
}
public double findSlope(int[] dot1, int[] dot2) {
return (double) (dot1[1] - dot2[1]) / (dot1[0] - dot2[0]); // y1-y2 / x1-x2 == 기울기
}
}
}
해당 문제는 직선의 평행 조건이 무엇인지 찾아보고 풀 수 있었다.
직선의 평행 조건은 y의 변화값 / x의 변화값으로 구할 수 있다. (y1-y2 / x1-x2)
평행이 되기 위해서는 기울기는 같되 y의 절편 값이 달라야 한다. 만약, 기울기도 같고 y 절편 값도 같으면 일치해서 만나게 된다.
해당 문제는 두 직선이 일치하는 경우에도 1을 반환해야 하기 때문에 기울기가 같은지만 파악하면 풀 수 있는 문제다.
728x90
반응형
'Algorithm' 카테고리의 다른 글
[프로그래머스] 연속된 수의 합(등차수열의 합) (0) | 2023.03.07 |
---|---|
[프로그래머스] 유한소수 판별하기(유클리드호제법, 소인수분해) (0) | 2023.02.27 |
[프로그래머스] 문자열 정렬하기(1) (0) | 2023.02.07 |
[프로그래머스] 분수의 덧셈 / 유클리드 호제법(최대공약수 구하기) (0) | 2023.01.30 |
[프로그래머스] 단어 변환 / DFS/BFS(그래프탐색) (0) | 2022.08.15 |