<aside> 💬 lv0, 비트 조작

비트 연산

문제 설명

정수 배열이 주어집니다. 배열 내 모든 요소에 대한 비트 AND 연산의 결과와 비트 OR 연산의 결과를 각각 반환하는 코드를 작성해주세요.


제한 사항


입출력 예

입력 (배열) 출력 (비트 AND 결과, 비트 OR 결과)
[12, 5, 6] (4, 13)
[7, 14, 3] (0, 15)

입출력 설명

첫 번째 예시에서 배열 [12, 5, 6]의 비트 AND 연산 결과는 4이고, 비트 OR 연산 결과는 13입니다. 두 번째 예시에서 배열 [7, 14, 3]의 비트 AND 연산 결과는 0이고, 비트 OR 연산 결과는 15입니다.

</aside>

😺 풀이 1. 비트 조작 연산자

def solution(nums):
    if not nums: **#1 예외처리**
        return (0, 0)

    bit_and = nums[0] **#2 변수명 생성**
    bit_or = nums[0]

    for num in nums[1:]: **#3 반복문**
        bit_and &= num
        bit_or |= num

    return (bit_and, bit_or) **#4 결과 반환**

단계별 풀이 전략

  1. 예외처리

    주어진 nums가 비어 있다면 (0,0)을 반환하는 예외처리를 작성해줍니다.

  2. 변수명 생성

    주어진 nums의 첫 번째 숫자를 각각 변수명으로 지정해줍니다.

  3. 반복문

    주어진 nums의 첫 번째 숫자를 제외한 나머지 숫자들에 대해 비트 AND연산비트 OR연산을 수행합니다.

  4. 결과 반환

    연산이 끝난 값들을 튜플로 묶어 반환합니다.

알아둬야 할 개념

비트 조작 연산자

풀이 2. 모듈 사용

import functools, operator **#1 모듈 선언**

def solution(data): 
    and_ = functools.reduce(operator.and_, data) **#2 함수 사용**
    or_ = functools.reduce(operator.or_, data)
    return (and_, or_) **#3 결과 반환**

단계별 풀이 전략

  1. 모듈 선언

    functools.reduce 함수와 operator.and_, operator.or_ 함수를 사용합니다.

  2. 함수 사용

    functools.reduce 함수는 리스트 내의 요소들에 대해 지정된 함수를 반복적으로 적용하여 하나의 값으로 축소합니다. operator.and_ 함수는 비트 AND 연산을 수행하고, operator.or_함수는 비트 OR 연산을 수행합니다.

  3. 결과 반환

    연산이 끝난 값들을 튜플로 묶어 반환합니다.

알아둬야 할 개념