평행 / Lv.0
문제 설명 )
점 네 개의 좌표를 담은 이차원 배열 dots가 다음과 같이 매개변수로 주어집니다.
- [[x1, y1], [x2, y2], [x3, y3], [x4, y4]]
주어진 네 개의 점을 두 개씩 이었을 때, 두 직선이 평행이 되는 경우가 있으면 1을 없으면 0을 return 하도록 solution 함수를 완성해보세요.
제한 사항 )
- dots의 길이 = 4
- dots의 원소는 [x, y] 형태이며 x, y는 정수입니다.
- 0 ≤ x, y ≤ 100
- 서로 다른 두개 이상의 점이 겹치는 경우는 없습니다.
- 두 직선이 겹치는 경우(일치하는 경우)에도 1을 return 해주세요.
- 임의의 두 점을 이은 직선이 x축 또는 y축과 평행한 경우는 주어지지 않습니다.
입출력 예 )
입출력 예 설명 )
입출력 예 #1
- 점 [1, 4], [3, 8]을 잇고 [9, 2], [11, 6]를 이으면 두 선분은 평행합니다.
입출력 예 #2
- 점을 어떻게 연결해도 평행하지 않습니다.
풀이)
이상하게 오늘은 집중도 안되고 알고리즘도 잘 풀리지 않는다..
이 문제도 어거지로 하드코딩으로 푼 듯..
알고리즘 말고 다른 공부를 하는게 더 좋을 것 같다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
|
#include <string>
#include <vector>
using namespace std;
// 평행이 되면 1 리턴
bool slope(pair<vector<int>, vector<int>> a, pair<vector<int>, vector<int>> b)
{
float x1 = a.first[0] - a.second[0];
float y1 = a.first[1] - a.second[1];
float x2 = b.first[0] - b.second[0];
float y2 = b.first[1] - b.second[1];
if ( y1 / x1 == y2 / x2)
{
return 1;
}
return 0;
}
int solution(vector<vector<int>> dots) {
vector<int> a = dots[0];
vector<int> b = dots[1];
vector<int> c = dots[2];
vector<int> d = dots[3];
// [a-b, c-d], [a-c, b-d], [a-d, b-c] 조합에서 하나라도 평행이 나올 경우
if (slope(make_pair(a, b), make_pair(c, d))
|| slope(make_pair(a, c), make_pair(b, d))
|| slope(make_pair(a, d), make_pair(b, c))
)
{
return 1;
}
return 0;
}
|
cs |
출처 : https://school.programmers.co.kr/learn/courses/30/lessons/120875
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
'Develop > 프로그래머스 (Cpp)' 카테고리의 다른 글
[프로그래머스] 삼각형의 완성조건 (2) (C++) (0) | 2023.03.05 |
---|---|
[프로그래머스] 저주의 숫자 3 (C++) (0) | 2023.03.04 |
[프로그래머스] 겹치는 선분의 길이 (C++) (0) | 2023.03.04 |
[프로그래머스] 유한소수 판별하기 (C++) (0) | 2023.03.04 |
[프로그래머스] 특이한 정렬 (C++) (0) | 2023.03.03 |