본문 바로가기
Algorithm/백준

[Python] 백준 3009번 - 네 번째 점

by 애기 개발자 2022. 8. 12.
반응형

문제

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

입력

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

출력

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

 

 

 


처음엔 어떻게 풀지 고민하다가

 

x좌표와 y좌표는 무조건 3개의 좌표를 공유하고

 

그중 2개는 반드시 일치하며 다른 하나가 나머지 좌표임을 알았다.

 

그래서 단순 비교문을 사용하여

 

data = []
for i in range(3):
  data.append(list(map(int, input().split())))

a, b = 0, 0
if data[0][0] == data[1][0]:
  a = data[2][0]
elif data[0][0] == data[2][0]:
  a = data[1][0]
else:
  a = data[0][0]

if data[0][1] == data[1][1]:
  b = data[2][1]
elif data[0][1] == data[2][1]:
  b = data[1][1]
else:
  b = data[0][1]

print(a, b)

위와 같은 코드를 작성하였다.

 

하지만 문제를 조금 더 보고 실제 좌표평면에 그리다가 생각했다.

 

결국 일치하는 좌표가 2개씩 쌍으로 나와야 하는 것이니
카운트를 하거나 빼도 되지 않나?

하는 생각을 했다. 인용처럼 하니 뭔가 있어 보인다

 

x = []
y = []
for i in range(3):
  a, b = map(int, input().split())
  x.append(a)
  y.append(b)

x.sort()
y.sort()

q = x[0]-x[1]+x[2]
w = y[0]-y[1]+y[2]

print(q, w)

위의 코드는 x와 y 값을 따로 저장한 후 정렬하여 계산한 방법이다.

 

앞선 예제 2번을 예로

 

30 20
10 10
10 20

일 때

 

x = 10, 10, 30

y = 10, 20, 20

 

q = 10 - 10 + 30

w = 10 - 20 + 20

 

q = 30

w = 10

 

위와 같이 도출할 수 있다.

반응형

댓글