<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. format, 이진수 변환

def solution(n):
    binary_str = format(n, "010b") **#1 이진수 변환**
    inverted_binary_str = "".join("1" if bit == "0" else "0" for bit in binary_str)
    **#2 조건문**
    return int(inverted_binary_str, 2) **#3 결과 반환**

단계별 풀이 전략

  1. 이진수 변환

    n을 이진수 문자열로 변환합니다.

  2. 조건문

    리스트 컴프리헨션을 사용하여 0은 1로, 1은 0으로 바꾼 리스트를 생성합니다. 생성된 리스트를 join 함수를 사용하여 하나의 문자열로 만듭니다.

  3. 결과 반환

    이진수 문자열을 정수로 변환하여 반환합니다.

알아둬야 할 개념

format 사용법

풀이 2. 이진수 변환

def solution(data):
    return 1023 - data **#1 결과 반환**

단계별 풀이 전략

  1. 결과 반환

    주어진 정수의 1과 0을 반전시키는 것은 모든 자릿수가 1로 채워져 있는 이진수에 주어진 정수를 빼는 것과 같습니다. 따라서 주어진 제한사항의 자릿수인 10자리를 모두 1로 채우는 1023에 주어진 수를 빼면 됩니다.

알아둬야 할 개념

2진수