[Py_Lv1] 나머지 한 점

Sunghun📈·2021년 5월 1일
0

프로그래머스

목록 보기
38/93
post-thumbnail

문제 설명

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

제한 사항

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

입출력 예

접근법

문제를 읽었을때 바로 이해하고 어떤 방식으로 결과값에 접근할 수 있을지
떠오르는 문제였다.

주어진 예제속 좌표를 그려표면 바로 나머지 하나의 위치를 알 수 있다.

근접한 2 점을 지나는 직선을 그어 서로 만나면서 각이 90도를 이루는
위치가 바로 나머지 한 점에 위치이다.

리스트로 주어진 v의 값으로 한점을 찾자면 3개의 좌표값에 x, y값들이
중복되지 않은 하나를 찾으면 된다.

예제 1번에 x좌표 1,3,3,? y좌표에 4,4,10,? 중복된 값이 보이지 않는
x좌표에 1과 y좌표에 10이 바로 답이되는 것이다.

여기서 xor을 이용하면 좀 더 간단하게 문제를 해결할 수 있다.

x좌표에 3과 3은 같은 값이므로 0이 출력된다. 또한 y좌표도 4와 4는
같은 값이므로 0이 출력된다. 그러면 x에는 1 y에는 10값만 남게된다.

그리고 그 값을 answer에 담아 제출하면 문제를 해결할 수 있다.

=============================================================

def solution(v):
    answer = []

    x = [i[0] for i in v]
    y = [i[1] for i in v]
    
    answer.append(x[0]^x[1]^x[2])
    answer.append(y[0]^y[1]^y[2])

    return answer
profile
데이터 분석과 AI 분야의 전문가를 꿈꾸는 청년

0개의 댓글