Gidhub BE Developer

LeetCode : 1318. Minimum Flips to Make a OR b Equal to c

2023-08-13
goodGid

1318. Minimum Flips to Make a OR b Equal to c

Problem

Given 3 positives numbers a, b and c. Return the minimum flips required in some bits of a and b to make ( a OR b == c ). (bitwise OR operation).
Flip operation consists of change any single bit 1 to 0 or change the bit 0 to 1 in their binary representation.

Example

Input: a = 2, b = 6, c = 5
Output: 3
Explanation: After flips a = 1 , b = 4 , c = 5 such that (a OR b == c)

[1] Code (23. 08. 13)

Need to Retry -> 정답 보고 다시 풀었다.

// Runtime: 0 ms
// Memory Usage: 38.9 MB
// Ref : https://leetcode.com/submissions/detail/1020289727
class Solution {
    public int minFlips(int a, int b, int c) {

        int ans = 0;

        while (a != 0 || b != 0 || c != 0) {
            if ((c & 1) == 1) {
                if ((a & 1) == 1 || (b & 1) == 1) {
                    // n/a
                } else {
                    ans += 1;
                }
            } else {
                if ((a & 1) == 1) {
                    ans++;
                }
                if ((b & 1) == 1) {
                    ans++;
                }
            }
            a >>= 1;
            b >>= 1;
            c >>= 1;
        }

        return ans;
    }
}
  • 재밌는 문제였다.

    DFS로 처음에 생각했었는데 그럴 필요 없이 비트를 갖고 놀았으면 됐다.


Review

  • 처음에 아이디어를 못 떠올려서 정답을 보고 다음날 다시 풀었다.

    다시 풀어보려고 할 때 아주 조금 막혔다.

    그래도 수월하게 풀었다.


Reference


Recommend

Index