반응형
문제
세 점이 주어졌을 때, 축에 평행한 직사각형을 만들기 위해서 필요한 네 번째 점을 찾는 프로그램을 작성하시오.
입력
세 점의 좌표가 한 줄에 하나씩 주어진다. 좌표는 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
위와 같이 도출할 수 있다.
반응형
'Algorithm > 백준' 카테고리의 다른 글
[Python] 백준 1157번 - 단어 공부 (0) | 2022.08.24 |
---|---|
[Python] 백준 10988번 - 팰린드롬인지 확인하기 (1) | 2022.08.17 |
[Python] 백준 1934번 - 최소공배수 (최소공배수, 최대공약수, 유클리드호제법) (0) | 2022.08.11 |
[Python] 백준 1789번 - 수들의 합 (0) | 2022.08.10 |
[Python] 백준 11653번 - 소인수분해 (0) | 2022.08.10 |
댓글