[프로그래머스]사각형의 한 점 찾기

ByWindow·2020년 10월 3일
0

Algorithm

목록 보기
1/104
post-thumbnail

1. 문제

프로그래머스에서 코딩테스트를 진행하면 데모 테스트로 나오는 문제이다.

문제설명

직사각형을 만드는 데 필요한 4개의 점 중 3개의 좌표가 주어질 때, 나머지 한 점의 좌표를 구하려고 합니다. 점 3개의 좌표가 들어있는 배열 v가 매개변수로 주어질 때, 직사각형을 만드는 데 필요한 나머지 한 점의 좌표를 return 하도록 solution 함수를 완성해주세요. 단, 직사각형의 각 변은 x축, y축에 평행하며, 반드시 직사각형을 만들 수 있는 경우만 입력으로 주어집니다.

제한사항

  • v는 세 점의 좌표가 들어있는 2차원 배열입니다.
  • v의 각 원소는 점의 좌표를 나타내며, 좌표는 [x축 좌표, y축 좌표] 순으로 주어집니다.
  • 좌표값은 1 이상 10억 이하의 자연수입니다.
  • 직사각형을 만드는 데 필요한 나머지 한 점의 좌표를 [x축 좌표, y축 좌표] 순으로 담아 return 해주세요.

입출력 예

  • v == [[1,4],[3,4],[3,10]] 일 때, result == [1,10]
  • v == [[1,1],[2,2],[1,2]] 일 때, result == [2,10]

2. 아이디어

x좌표의 값과 y좌표의 값을 각각 찾아주는데
주어진 3개의 점 중 두개의 점이 같은 좌표를 가진다면 우리가 구하는 점의 좌표는 그 다른 하나의 점과 좌표가 같은 것이다.
이것을 x와 y에 적용하면 될 것이라 생각했다.

혹시 다른 풀이방법이 있는 분은 댓글 부탁드립니다...

3. 코드

import java.util.Scanner;

class retangle{
    public static int[] solution(int[][] v){
        //static 함수에서 호출당해야되므로 static형
        int[] answer = new int[2];

        //x축 찾기
        if(v[0][0] == v[1][0])  answer[0] = v[2][0];
        else if(v[0][0] == v[2][0]) answer[0] = v[1][0];
        else answer[0] = v[0][0];

        //y축 찾기
        if(v[0][1] == v[1][1])  answer[1] = v[2][1];
        else if(v[0][1] == v[2][1]) answer[1] = v[1][1];
        else answer[1] = v[0][1];
        return answer;
    }

    public static void main(String[] args) {
        //static이어야 main mathod를 인식한다...
        Scanner stdin = new Scanner(System.in);

        int a;
        int[][] point = new int[3][2];
        for(int i =0;i<3;i++){
            for(int j =0;j<2;j++){
                a=stdin.nextInt();
                point[i][j] = a;
            }  
        }

        int[] ans = solution(point);

        System.out.println(ans[0] +","+ ans[1]); //배열의 각 요소를 따로 적어주지 않으면 배열의 주소를 출력한다

        stdin.close();
    }

}

4. end...

쉬운 수학문제인데도 혹시나 더 좋은 방법이 있을까하고 고민을 좀 했다.
아무래도 내 생에 첫 코딩 문제여서 문제를 해결하는 감이 아직 없는 것 같다.

1일 1문제를 목표로 열심히 하자!

profile
step by step...my devlog

0개의 댓글