문제 링크: https://www.acmicpc.net/problem/3009
문제
세 점이 주어졌을 때, 축에 평행한 직사각형을 만들기 위해서 필요한 네 번째 점을 찾는 프로그램을 작성하시오.
입력
세 점의 좌표가 한 줄에 하나씩 주어진다. 좌표는 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개의 좌표가 주어졌을 때, 직사각형을 만들기 위한 나머지 한개의 좌표를 구하는 문제이다.
코드 설명
- 직사각형은 내각이 모두 직각이며 마주보는 두 변이 평행하기 때문에, 3개의 좌표가 주어질 경우, 쉽게 나머지 좌표를 구할 수 있다.
- x축과 평행하는 두 변에서, 왼쪽에 위치한 두 좌표의 x 좌표는 서로 같고, 오른쪽에 위치한 두 좌표의 x 좌표는 동일하다.
=> x 좌표의 개수는 2개이다. - y축과 평항하는 두 변에서, 위쪽에 위치한 변의 두 좌표의 y 좌표는 서로 같고, 아래에 위치한 변의 두 좌표의 y 좌표는 동일하다.
=> y 좌표의 개수는 2개이다.
- x축과 평행하는 두 변에서, 왼쪽에 위치한 두 좌표의 x 좌표는 서로 같고, 오른쪽에 위치한 두 좌표의 x 좌표는 동일하다.
- x 좌표와 y 좌표를 넣어줄 빈 리스트 x_, y_를 선언한다.
x_ = [] y_ = []
- 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)
- 첫 번째 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)
반응형
'IT > 알고리즘' 카테고리의 다른 글
[JavaScript] Array vs Queue vs Deque (2) | 2023.01.08 |
---|---|
[BAEKJOON] 백준 4803번: 트리 (node.js) (0) | 2023.01.08 |
[BAEKJOON] 백준 1085번: 직사각형에서 탈출 (Python) (0) | 2021.09.13 |
[BAEKJOON] 백준 4948번: 베르트랑 공준 (Python) (0) | 2021.09.05 |
[BAEKJOON] 백준 1929번: 소수 구하기 (Python) (0) | 2021.09.05 |
댓글