1) 사이트
2) 문제
세 지점의 (x좌표, y좌표)가 주어졌을 때 직사각형을 만들기 위한 나머지 x좌표, y좌표를 출력하면 되는 문제입니다.
사실 평행사변형의 상황도 직사각형으로 들어가나 고민했지만, 다행히도 고려해주지 않아도 된다는 것을 알고 코드를 짰습니다.
실제로 그림을 그려보시면, 한 가지 규칙을 찾아내실 수 있는데요.
(5, 5)
(5, 7)
(7, 5)
이 세 점에서 직사각형을 만들 수 있는 점은 (7, 7) 입니다.
여기서 알 수 있는 점은 x에서 5가 2번 7이 2번
y에서 5가 2번 7이 2번 나온다는 규칙이죠.
아래 예제도 다시 볼까요?
(30, 20)
(10, 10)
(10, 20)
이 세점에서 직사각형을 만들 수 있는 점은 (30. 10) 입니다.
이제 눈치 채셨나요? 각 x, y 에서 똑같은 수는 각각 2번 씩 도출되어야 직사각형으로 만들 수 있습니다.
3) 파이썬 코드
#똑같은 x 두번 y 두번이 나와야 직사각형을 평행해서 만들 수 있다.
wid=[]
hei=[]
x=[0]*1001
y=[0]*1001
result_x=0
result_y=0
for i in range(0,3):
a,b=map(int,input().split(' '))
if(x[a]==1):
x[a]=x[a]+1
if(x[a]==0):
wid.append(a)
x[a]=x[a]+1
if(y[b]==1):
y[b]=y[b]+1
if(y[b]==0):
hei.append(b)
y[b]=y[b]+1
if(x[wid[0]]<2):
result_x=wid[0]
if(x[wid[1]]<2):
result_x=wid[1]
if(y[hei[0]]<2):
result_y=hei[0]
if(y[hei[1]]<2):
result_y=hei[1]
print(f'{result_x} {result_y}')
3-1) 선수 지식
파이썬 코드를 이해하기 위해 알아야 할 선수 지식이 있습니다.
1. 리스트를 0으로 초기화하는 방법
>리스트명=[0]*100
위와 같이 선언하면 0으로 채워진 0~99까지의 인덱스를 갖는 리스트를 만나보실 수 있습니다.
3-2) 설명
1. 값을 저장할 다양한 변수들을 선언합니다.
wid=[]
hei=[]
x=[0]*1001
y=[0]*1001
result_x=0
result_y=0
1-1) wid, hei : wid에는 x좌표 2개, hei에는 y좌표 2개의 값이 들어갑니다. 3개의 좌표는 2개의 x, 2개의 y로 이루어져 있기 때문이죠.
1-2) x, y : 3개의 좌표를 입력받고 좌표에 해당하는 인덱스에 +1을 해줄 겁니다. 예를 들어 (7, 7)이면, x[7], y[7]에 +1을 해줄 겁니다.
1-3) result_x, result_y : 마지막 좌표 결과 값을 저장합니다.
2. 직사각형을 만들 3개의 좌표 값을 입력 받습니다.
for i in range(0,3):
a,b=map(int,input().split(' '))
3. 입력받은 x, y의 인덱스를 +1해주고, 처음들어오는 수일 경우 wid, hei 인덱스에 각각 x, y좌표를 넣어줍니다.
for i in range(0,3):
a,b=map(int,input().split(' '))
if(x[a]==1):
x[a]=x[a]+1
if(x[a]==0):
wid.append(a)
x[a]=x[a]+1
if(y[b]==1):
y[b]=y[b]+1
if(y[b]==0):
hei.append(b)
y[b]=y[b]+1
x[a]==1을 0보다 먼저 검사하는 이유는 0일 때 x[a]에 +1 을 해주면 다음 if 절에서 또 x[a]==1을 만나 2번 1을 더해주는 셈이 되기 때문입니다. y[b]도 마찬가지 입니다.
4. x, y좌표로 들어온 수 가운데 1개가 들어온 수를 결과 변수에 넣는다.
if(x[wid[0]]<2):
result_x=wid[0]
if(x[wid[1]]<2):
result_x=wid[1]
if(y[hei[0]]<2):
result_y=hei[0]
if(y[hei[1]]<2):
result_y=hei[1]
print(f'{result_x} {result_y}')
그리고 결과 값을 출력하면 끝 입니다.
4) c언어
없음
궁금한 점이나 공유할 정보가 있다면 댓글로 남겨주세요 *^^*
끝!
'알고리즘 > 백준' 카테고리의 다른 글
3053번 택시 기하학 (0) | 2021.07.24 |
---|---|
4153번 직각삼각형 (0) | 2021.07.23 |
1085번 직사각형에서 탈출 (0) | 2021.07.22 |
9020번 골드바흐의 추측 (0) | 2021.07.21 |
4948번 베르트랑 공준 (0) | 2021.07.17 |