jyamethyst21 님의 블로그

백준 3009번 - 네 번째 점 (PYTHON 풀이) 본문

CODING 💻

백준 3009번 - 네 번째 점 (PYTHON 풀이)

jyamethyst21 2025. 9. 10. 03:38

문제:

 

해당 문제는 세 개의 좌표를 받은 뒤 남은 한 좌표를 찾는 문제이다. 이때 직사각형이 되도록 평행이 되는 점을 찾아야 한다.

헷갈렸던 건 평행이 되게 하면 되는데 이걸 어떤 규칙으로 코드로 짜야 하는지에 대한 것이었다. 헷갈려서 그림을 그려보았다.

그림과 같이 노란색 점을 찾으면 되는데 갈색 좌표를 보면 각각의 점이 이어지는 것을 확인할 수 있다. 예를 들어 (5,7)은 아래 (5,5)에서 x좌표가 동일하고 (5,5)는 그 옆 (7,5)에서 y좌표가 동일하다. 그렇다면 노란점은 어떨까?

(7,5)를 기준으로 x좌표가 동일하고 (5,7) 기준으로 y좌표가 동일하다. 즉, 남은 한 점은 기존에 존재하는 점과 이어지게 만들면 된다. 

그러려면 기존 좌표는 이미 짝이 존재하기 때문에 짝이 없는 숫자 즉, 빈도수가 가장 적은 수의 세트를 출력하면 될 것이다.

 

풀이:

a,b=map(int,input().split())
c,d=map(int,input().split())
e,f=map(int,input().split())

k=[a,c,e]
q=[b,d,f]

for i in k:
    if k.count(i) == 1:
        x = i
for j in q:
    if q.count(j) == 1:
        y = j

print(x, y)

상기 문제 파트에서 설명한 풀이를 토대로 코드를 작성하면 위와 같다.

문제에서 세 번 입력을 받는 것이 나와있기 때문에 세 줄의 입력을 받은 뒤 x좌표끼리 리스트를, y좌표끼리 리스트를 만들어준다.

그 후 python의 좋은 내장 함수인 count를 활용하여 각 리스트의 빈도수를 체크한다. 그 후 1번만 나와있는 수를 각각 x, y에 저장해준 뒤 출력하면 문제에서 요구하는 바가 해결된다.