반응형
문제 설명
직사각형을 만드는 데 필요한 4개의 점 중 3개의 좌표가 주어질 때, 나머지 한 점의 좌표를 구하려고 합니다. 점 3개의 좌표가 들어있는 배열 v가 매개변수로 주어질 때, 직사각형을 만드는 데 필요한 나머지 한 점의 좌표를 return 하도록 solution 함수를 완성해주세요. 단, 직사각형의 각 변은 x축, y축에 평행하며, 반드시 직사각형을 만들 수 있는 경우만 입력으로 주어집니다.
제한사항
- v는 세 점의 좌표가 들어있는 2차원 배열입니다.
- v의 각 원소는 점의 좌표를 나타내며, 좌표는 [x축 좌표, y축 좌표] 순으로 주어집니다.
- 좌표값은 1 이상 10억 이하의 자연수입니다.
- 직사각형을 만드는 데 필요한 나머지 한 점의 좌표를 [x축 좌표, y축 좌표] 순으로 담아 return 해주세요.
입출력 예
입출력 예 설명
입출력 예 #1
세 점이 [1, 4], [3, 4], [3, 10] 위치에 있을 때, [1, 10]에 점이 위치하면 직사각형이 됩니다.
입출력 예 #2
세 점이 [1, 1], [2, 2], [1, 2] 위치에 있을 때, [2, 1]에 점이 위치하면 직사각형이 됩니다.
풀이
c++
#include <iostream>
#include <vector>
using namespace std;
vector<int> solution(vector<vector<int> > v) {
vector<int> ans(2);
for(int i=0; i<2; i++){
for(int j=i+1; j<3; j++){
if(v[i][0] == v[j][0]){
ans[0] = v[abs(i+j-3)][0];
}
if(v[i][1] == v[j][1]){
ans[1] = v[abs(i+j-3)][1];
}
}
}
return ans;
}
javascript
function solution(v) {
var answer = [];
const x = [], y = [];
v.forEach((item,idx,arr)=>{
if(!x[item[0]]) x[item[0]] = -1;
else x[item[0]] = 0;
if(!y[item[1]]) y[item[1]] = -1;
else y[item[1]] = 0;
})
v.forEach((item,idx,arr)=>{
if(x[item[0]]==-1) answer[0] = item[0];
if(y[item[1]]==-1) answer[1] = item[1];
})
return answer;
}
반응형
'IT > 알고리즘' 카테고리의 다른 글
프로그래머스 - 다리를 지나는 트럭(c++, javascript) (0) | 2020.09.17 |
---|---|
프로그래머스 - 데모 테스트(SQL) (0) | 2020.09.16 |
프로그래머스 - 기능개발(c++) (0) | 2020.09.16 |
프로그래머스 - 추석 트래픽(c++) (0) | 2020.09.15 |
프로그래머스 - 프린터(c++) (0) | 2020.09.14 |