
직사각형을 그리려고 할 때, 세 개의 꼭지점 x, y 좌표가 주어진다. 마지막 x,y 좌표를 출력하는 프로그램을 구현하세요.
let input = [
[[5, 5, 8], [5, 8, 5]],
[[3, 1, 1], [2, 1, 2]],
[[7, 7, 3],[4, 1, 1]],
];
for (let i = 0; i < input.length; i++){
process.stdout.write(`#${i+1} `);
console.log(answer(input[i][0], input[i][1]));
}
현재 세 꼭지점의 좌표가 주어진다면, 직사각형 특성 상 같은 x나 y값이 두 번씩 나와야 하므로 해당 배열에서 한번만 나온 수가 남은 좌표의 값일 것입니다. 따라서 중복이 없는 수를 검사하면 됩니다.
function answer(x_arr, y_arr){
let result = [];
if ( x_arr[0] === x_arr[1]){
result.push(x_arr[2]);
} else if ( x_arr[0] === x_arr[2]){
result.push(x_arr[1]);
} else {
result.push(x_arr[0]);
}
if ( y_arr[0] === y_arr[1]){
result.push(y_arr[2]);
} else if ( y_arr[0] === y_arr[2]){
result.push(y_arr[1]);
} else {
result.push(y_arr[0]);
}
return result;
}
if문을 사용하여 하나씩 검사합니다. x 좌표의 0번째와 1번째, 0번째와 2번째, 1번째와 2번째의 경우를 설정하여 중복이 없는 수를 각각 골라 빈 배열result 에 넣습니다. y도 마찬가지로 구합니다.
function answer(x_arr, y_arr){
let result = [];
function findUnique(arr) {
for (let i = 0; i < arr.length; i++) {
if (arr.indexOf(arr[i]) === arr.lastIndexOf(arr[i])) {
return arr[i];
}
}
}
result.push(findUnique(x_arr));
result.push(findUnique(y_arr));
return result;
}
findUnique라는 함수를 하나 만들어 사용합니다. for문과 if문을 사용하여 해당 숫자가 나오는 첫 인덱스와 마지막 인덱스가 같을 경우 중복이 없음을 판결하고, 해당 값을 리턴하는 함수입니다. 여기에 x, y 좌표를 넣은 후 result에 넣습니다.