본문 바로가기
IT/알고리즘

[BAEKJOON] 백준 3009번: 네 번째 점 (Python)

by 무녈 2021. 9. 14.

문제 링크: https://www.acmicpc.net/problem/3009

 

3009번: 네 번째 점

세 점이 주어졌을 때, 축에 평행한 직사각형을 만들기 위해서 필요한 네 번째 점을 찾는 프로그램을 작성하시오.

www.acmicpc.net


문제

세 점이 주어졌을 때, 축에 평행한 직사각형을 만들기 위해서 필요한 네 번째 점을 찾는 프로그램을 작성하시오.

입력

세 점의 좌표가 한 줄에 하나씩 주어진다. 좌표는 1보다 크거나 같고, 1000보다 작거나 같은 정수이다.

출력

직사각형의 네 번째 점의 좌표를 출력한다.


코드

x_ = []
y_ = []

for i in range(3):
    x, y = map(int, input().split())
    x_.append(x)
    y_.append(y)

for i in range(3):
    if x_.count(x_[i]) == 1:
        x = x_[i]
    if y_.count(y_[i]) == 1:
        y = y_[i]

print(x,y)

문제 요약

3개의 좌표가 주어졌을 때, 직사각형을 만들기 위한 나머지 한개의 좌표를 구하는 문제이다.

코드 설명

  1. 직사각형은 내각이 모두 직각이며 마주보는 두 변이 평행하기 때문에, 3개의 좌표가 주어질 경우, 쉽게 나머지 좌표를 구할 수 있다.
    1. x축과 평행하는 두 변에서, 왼쪽에 위치한 두 좌표의 x 좌표는 서로 같고, 오른쪽에 위치한 두 좌표의 x 좌표는 동일하다.
      => x 좌표의 개수는 2개이다.
    2. y축과 평항하는 두 변에서, 위쪽에 위치한 변의 두 좌표의 y 좌표는 서로 같고, 아래에 위치한 변의 두 좌표의 y 좌표는 동일하다. 
      => y 좌표의 개수는 2개이다.
  2. x 좌표와 y 좌표를 넣어줄 빈 리스트 x_, y_를 선언한다.
    x_ = []
    y_ = []​
  3. 3개의 좌표가 주어지므로, for문이 3번 반복되도록 하며, x 와 y 변수에 map함수를 통해 각각의 숫자를 할당한 뒤 x좌표는 x_리스트에, y 좌표는 y_리스트에 입력한다.
    for i in range(3):
        x, y = map(int, input().split())
        x_.append(x)
        y_.append(y)​
     
  4. 첫 번째 for문이 종결되고, 다시 새로운 for문을 3회 반복하여 각각의 리스트 내 숫자가 1개인 인자를 출력한다.
    for i in range(3):
        if x_.count(x_[i]) == 1:
            x = x_[i]
        if y_.count(y_[i]) == 1:
            y = y_[i]
    
    print(x,y)​
반응형

댓글