알고리즘

백준 - 3009번

joy_lee 2021. 8. 10. 20:32

네 번째 점

https://www.acmicpc.net/problem/3009

 

3009번: 네 번째 점

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

www.acmicpc.net

 

문제에서 만들어지는 직사각형이 축에 평행한 직사각형이라고 했으니 만들어지는 직사각형은 다음과 같이 그릴 수 있다.

모든 좌표값을 모아서 본다면 x축은 a가 2번, b가 2번 사용되고 y축은 x가 2번, y가 2번 사용된다.

입력받은 세 좌표들을 보고 한 번만 나온 값들을 적으면 되는 것이다.

코드로는 어떻게 찾아야 할지 고민하다가 list와 set을 사용했다.

 

1
2
3
4
5
6
7
8
x1, y1 = map(int, input().split())
x2, y2 = map(int, input().split())
x3, y3 = map(int, input().split())
list_x = [x1, x2, x3]
list_y = [y1, y2, y3]
x4 = sum(set(list_x))*2 - sum(list_x)
y4 = sum(set(list_y))*2 - sum(list_y)
print(x4, y4)
cs

입력받은 x좌표끼리, y좌표끼리 각각 list에 넣는다.

set으로 변환해 중복값을 없애고 (set의 합)*2 - (list의 합)으로 남은 좌표를 구했다.

'알고리즘' 카테고리의 다른 글

백준 - 3053번  (0) 2021.08.11
백준 - 4153번  (0) 2021.08.10
백준 - 1085번  (0) 2021.08.10
백준 - 9020번  (0) 2021.08.06
백준 - 4948번 / 에라토스테네스의 체  (0) 2021.08.06