반응형
https://www.acmicpc.net/problem/3009
3009번: 네 번째 점
세 점이 주어졌을 때, 축에 평행한 직사각형을 만들기 위해서 필요한 네 번째 점을 찾는 프로그램을 작성하시오.
www.acmicpc.net
이 문제는 직사각형 모서리의 좌표 3개가 주어졌을 때, 남은 1개의 좌표를 찾는 문제이다.
x,y좌표 각각 중복으로 입력된 좌표는 삭제하면, 남는 좌표가 정답이다.
예제 입력 1의 경우, x좌표는 5 5 7 이 입력되었으니 7만 남고, y좌표는 5 7 5 가 입력되었으니 7만 남는 것이다.
풀이 1. xor 이용
x = y = 0 # 초기값으로 x와 y를 0으로 설정
for _ in range(3):
a, b = map(int, input().split()) # 사용자로부터 두 정수를 입력받아 a와 b에 할당
x ^= a # x에 현재의 a와 XOR 연산을 수행하여 결과를 x에 할당
y ^= b # y에 현재의 b와 XOR 연산을 수행하여 결과를 y에 할당
print(x, y) # 최종적으로 계산된 x와 y를 출력
XOR(Exclusive OR) 연산은 두 비트가 서로 다를 때 1을 반환하고, 같을 때는 0을 반환하는 논리 연산입니다.
XOR 연산은 기호로 '^'로 나타내며, 예를 들어, A XOR B는 A와 B가 다를 때 1, 같을 때 0을 반환합니다.
- 0 XOR 0 = 0
- 0 XOR 1 = 1
- 1 XOR 0 = 1
- 1 XOR 1 = 0
풀이 2. list를 이용해 좀 더 직관적인 풀이
arr=[[],[]] # arr[0] : x값 저장 , arr[1] : y값 저장
for _ in range(3):
x,y = map(int,input().split())
if(x not in arr[0]): # 없으면 삽입
arr[0].append(x)
else: # 있으면 삭제
arr[0].remove(x)
if(y not in arr[1]):
arr[1].append(y)
else: arr[1].remove(y)
print(arr[0][0],arr[1][0]) #print(*arr[0],*arr[1])으로도 출력 가능
반응형
'Coding Test > 백준 알고리즘' 카테고리의 다른 글
[백준] 2563 : 색종이 - python (0) | 2024.01.06 |
---|---|
백준 [3052]번 나머지 - python, js (0) | 2021.10.29 |
[백준] 2577 (일차원 배열 : 숫자의 개수)_java (0) | 2020.04.16 |
[백준] 2562 (1차원 배열 : 최댓값)_java (0) | 2020.04.16 |
[백준] 10039 (실습1 : 평균점수)_java (0) | 2020.04.16 |