XOR 연산해보기

인생노잼시기·2021년 8월 14일
1

😨코딩테스트

목록 보기
18/18

직사각형 좌표 구하기

3가지 좌표가 주어졌을 때
나머지 1가지 좌표를 구해라

import Foundation

let v = [[1, 4], [3, 4], [3, 10]]

var answer = [0, 0]
for i in 0..<2 {
    if v[0][0] == v[1][i] {
        answer[i] = v[2][i]
    } else if v[0][i] == v[2][i] {
        answer[i] = v[1][i]
    } else if v[1][i] == v[2][i] {
        answer[i] = v[0][i]
    }
}

print(answer)   //[1, 2]

XOR 연산 활용하기
같으면 false, 다르면 true
세 값을 XOR 연산 했을 때 같으면 0으로 변환(리셋되는 효과가 나타나고)되어 다른 값만 남게 되는 것을 활용하는 것이다
같으면 같은 값을 다르면 다른 값을 반환한다

import Foundation

let v = [[1, 4], [3, 4], [3, 10]]

var answer = [0, 0]
for i in 0..<2 {
    answer[i] = v[0][i] ^ v[1][i] ^ v[2][i]
}

print(answer)   //[1, 10]

numbers라는 int형 배열이 있다
해당 배열에 들어있는 숫자들은 오직 한 숫자를 제외하고는 모두 두 번씩 들어있다
오직 한 번만 등장하는 숫자를 찾는 코드를 작성하라

let numbers = [1, 2, 1, 2, 3, 4, 3, 4, 5]

// XOR는 같으면 0, 다르면 1
print(5^5)  //0
print(5^0)  //5
// 101
// 000
// ---
// 101

var result = 0
for i in numbers {
    result ^= i
}
print(result)
profile
인생노잼

0개의 댓글