https://programmers.co.kr/learn/courses/18/lessons/1878?language=cpp
문제
3점이 주어지면 직사각형을 만들 수 있는 한 점을 구하는 문제다
풀이
x좌표, y좌표 각각 한 번씩만 나온 점을 가져와주면 된다.
나왔는지 안나왔는지를 반복문과 조건문을 써서 찾아도 되지만 XOR을 이용하면 더 간단하게 풀 수 있다.
XOR는 보통 같은 값이면 0, 다르면 1이라고 하는데
1이 홀수개가 있으면 1이 나온다
코드
- C++
vector<int> solution(vector<vector<int> > v) {
vector<int> ans;
ans.push_back(v[0][0]^v[1][0]^v[2][0]);
ans.push_back(v[0][1]^v[1][1]^v[2][1]);
return ans;
}
- Python
XOR
def solution(v):
answer = []
answer.append(v[0][0]^v[1][0]^v[2][0])
answer.append(v[0][1]^v[1][1]^v[2][1])
return answer
collections
import collections
def solution(v):
answer = []
for i in zip(*v):
count = collections.Counter(i)
answer.extend([j for j in count if count[j] == 1])
return answer
zip(*(asterisk))로 2차원 배열을 풀어서 x, y를 나눠서 반복문을 돌게 하고
collections에 있는 Counter를 사용해서 개수를 센다
1개만 있는 숫자를 extend해준다