소프트웨어에 대한 모든 것

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

알고리즘/LeetCode

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

앤테바 2022. 12. 24. 23:49
반응형

 

문제)

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

 

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 1:

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

Example 2:

Input: a = 4, b = 2, c = 7
Output: 1

Example 3:

Input: a = 1, b = 2, c = 3
Output: 0

 

Constraints:

  • 1 <= a <= 10^9
  • 1 <= b <= 10^9
  • 1 <= c <= 10^9

 

솔루션1)

- a, b, c를 바이너리로 변경

- zfill()을 통해서 바이너리 길이를 맞추는 작업 수행

- 반복문을 통해서 순차적으로 OR 연산을 비교하면서 비트를 몇 개 flips 할지 계산해주면 끝

class Solution:
    def minFlips(self, a: int, b: int, c: int) -> int:
        # to binary string
        a = bin(a)[2:]
        b = bin(b)[2:]
        c = bin(c)[2:]
        
        # 최대 길이
        max_len = max(len(a), len(b), len(c))
        
        # 최대 길이에 맞춰서 0 fill 수행
        a = a.zfill(max_len)
        b = b.zfill(max_len)
        c = c.zfill(max_len)
        
        count = 0
        for x, y, z in zip(a, b, c):
            if (int(x) | int(y)) == int(z):
                # OR 연산 했을 때 값이 z와 동일하므로 bit flip 할 필요 없음
                continue
            elif int(z) == 0:
                # z가 0이 되어야 하므로 1인 경우는 무조건 bit flip을 해줘야 하는 경우
                # a, b 모두 1인 경우는 2번 bit flips 발생
                count += 1 if x == '1' else 0
                count += 1 if y == '1' else 0                
            else:
                # z가 1인 경우. bit flip이 1번은 무조건 수행되어야 함
                count += 1
        
        return count

 

반응형

'알고리즘 > LeetCode' 카테고리의 다른 글

2389. Longest Subsequence With Limited Sum  (0) 2022.12.25
2418. Sort the People  (0) 2022.12.24
2367. Number of Arithmetic Triplets  (0) 2022.12.24
2352. Equal Row and Column Pairs  (0) 2022.12.23
2373. Largest Local Values in a Matrix  (0) 2022.12.23
Comments