본문 바로가기
알고리즘

[알고리즘 문제] 직사각형 완성하기 (Python / 파이썬)

by yewonnie 2022. 5. 11.

문제

직사각형을 좋아하는 유니는 좌표평면 위에 직사각형 하나를 그렸다.
이 직사각형의 각 변은 x축에 평행하거나 y축에 평행하도록 그려졌다.
어느날 직사각형보다 직각삼각형을 좋아하는 지니가 유니의 직사각형의 네 꼭짓점 중 하나를 지워버렸다.
유니가 다시 직사각형을 만들 수 있도록 남아있는 세 꼭짓점의 좌표를 입력하면 지니가 지운 점의 좌표를 알려주는 프로그램을 작성하시오.

입력

첫째 줄에 테스트케이스의 수 T가 주어진다..
각 테스트케이스의 첫 줄에 x1, y1, x2, y2, x3, y3가 공백으로 구분되어 주어진다. 이는 남은 세 점의 좌표가 각각 (x1, y1), (x2, y2), (x3, y3)임을 의미한다. 모든 점의 좌표는 1 이상 1,000,000 이하의 자연수다.
( 1 ≤ T ≤ 10 )

출력

각 테스트케이스마다 '#'과 테스트케이스의 번호, 공백을 출력한 뒤 지니가 지운 점의 x좌표와 y좌표를 공백으로 구분하여 출력한다.

문제 풀이

직사각형의 세 꼭짓점의 좌표가 주어졌을 때 

나머지 한 점의 좌표를 구하는 문제입니다. 

 

직사각형의 세 꼭짓점의 좌표가 주어졌을 때

나머지 한 점의 좌표는 

x좌표와 y좌표를 나누어 생각했을 때

세 개의 x 좌표 중 하나만 등장한 좌표가 나머지 한 점의 x 좌표가 되고

세 개의 y 좌표 중 하나만 등장한 좌표가 나머지 한 점의 y 좌표가 됩니다. 

 

따라서 만약 x1 과 x2가 같다면 나머지 한 점의 x 좌표는 x3이 됩니다.

이런 식으로 각 경우에 따라 나머지 한 점의 x 좌표와 y 좌표를 구할 수 있습니다.


My code

for tc in range(int(input())):
    x1, y1, x2, y2, x3, y3 = map(int,input().split()) # 세 점의 좌표

    # 세 x 좌표 중 다른 하나를 넣어줌
    if x1 == x2: 
        x4 = x3 
    elif x1 == x3:
        x4 = x2 
    else:
        x4 = x1 

    # 세 y 좌표 중 다른 하나를 넣어줌
    if y1 == y2:
        y4 = y3 
    elif y1 == y3:
        y4 = y2 
    else:
        y4 = y1

    print('#' + str(tc + 1), end = ' ')
    print(x4, y4)

 

 

댓글