🔗 문제 링크
https://www.acmicpc.net/problem/3009
3009번: 네 번째 점
세 점이 주어졌을 때, 축에 평행한 직사각형을 만들기 위해서 필요한 네 번째 점을 찾는 프로그램을 작성하시오.
www.acmicpc.net
문제는 굉장히 단순하다. 축과 평행한 직사각형의 세 점이 주어졌을 때, 나머지 한 점을 찾는 코드를 작성하면 된다.
🔎 문제 풀이 & 작성 코드
직사각형의 기초적인 정의를 따라 코드를 구현했다. 네 점은 (x1, y1), (x1, y2), (x2, y1), (x2, y2)으로, 각각 2개의 x좌표와 2개의 y좌표가 반복된다. 그래서 세 점의 좌표를 x좌표와 y좌표로 구분하여 모두 모은 다음, 한 개만 입력된 좌표를 아직 입력되지 않은 나머지 한쌍을 찾아낼 수 있도록 하였다.
x, y = [], []
for i in range(3):
a,b = map(int, input().split())
x.append(a)
y.append(b)
x.sort()
y.sort()
if x[1] == x[0]:
print(x[2], end=" ")
else:
print(x[0], end=" ")
if y[1] == y[0]:
print(y[2])
else:
print(y[0])
좀 더 간결한 코드가 없나 찾아보던 와중에 신박하고 깔끔한 코드를 하나 찾았다! 논리 연산자인 XOR를 이용한 풀이이다. XOR의 연산 방식에 대한 자세한 설명은 생략하고, 다음과 같이 동작한다. 특이한 점은, 3개의 입력이 주어져있을 때, 두개는 같고 하나만 다르다면, 다른 하나를 출력해 주는 특징이 있다. 그래서 이걸 이용해서 나머지 한 점의 좌표를 구할 수 있다.
x, y = [], []
for i in range(3):
a,b = map(int, input().split())
x.append(a)
y.append(b)
print(x[0]^x[1]^x[2], y[0]^y[1]^y[2])
🌍 깃허브 링크
실제 작성한 해당 정답 코드는 깃허브에도 업로드해두었습니다.
dohyun-99 - Overview
dohyun-99 has 4 repositories available. Follow their code on GitHub.
github.com
728x90
반응형
'Coding Test > Baekjoon' 카테고리의 다른 글
[백준/파이썬] 4375번: 1 풀이 (0) | 2023.08.17 |
---|---|
[백준/파이썬] 2609번: 최대공약수와 최소공배수 풀이 (0) | 2023.08.04 |
[백준/파이썬] 10809: 알파벳 찾기 풀이 (0) | 2023.08.01 |
[백준/파이썬] 11718: 그대로 출력하기 & 11719: 그대로 출력하기 2 풀이 (0) | 2023.07.31 |
[백준/파이썬] 1193. 분수찾기 풀이 (0) | 2023.07.28 |