<aside> 💬 lv0, 비트 조작

비트 치환 문제

문제 설명

정수 N이 주어집니다. 이 정수의 비트 표현에서 모든 1을 A로, 모든 0을 B로 치환하여 결과를 문자열로 반환하는 코드를 작성해주세요.


제한 사항


입출력 예

입력 (N) 출력 (비트 문자열)
5 'ABA'
9 'ABBA'

입출력 설명

첫 번째 예시에서 5의 이진 표현은 '101'입니다. 여기서 1을 'A'로, 0을 'B'로 치환하면 'ABA'가 됩니다. 두 번째 예시에서 9의 이진 표현은 '1001'이며, 치환 결과는 'ABBA'입니다.

</aside>

😺 풀이 1. 비트 치환, 메서드 체이닝

def solution(data): **#1 함수 정의**
    return bin(data)[2:].replace("0", "B").replace("1", "A") **#2 비트 치환, 메서드 체이닝**

단계별 풀이 전략

  1. 함수 정의

    코드의 첫 부분에서 solution이라는 함수를 정의합니다. 이 함수는 하나의 인자 data를 받습니다. data는 비트 문자열로 치환하고자 하는 대상이 되는 정수형 객체입니다.

  2. 비트 치환, 메서드 체이닝

    1. 먼저 bin 함수를 이용하여 정수형 객체인 data를 비트 표현으로 치환합니다. 이때 나오는 비트 표현 앞에는 2진수를 나타내는 접두어 0b가 비트 표현 앞에 붙어서 나옵니다.
    2. 해당 접두어를 제거하기 위해 bin(data)[2:]와 같이 비트 표현을 슬라이싱합니다. 슬라이싱되어 나온 비트 표현의 0과 1을 메서드 체이닝을 통해 순차적으로 B와 A로 치환해 줍니다.
    3. 그럼, 먼저 비트 표현 바로 뒤에 이어지는 replace 메서드를 이용해 비트 표현에서 0인 부분을 B로 치환합니다.
    4. 그리고 치환된 문자열에 replace 메서드를 이어지게 하여 비트 표현의 나머지 1인 부분을 A로 치환해서 비트 문자열을 완성합니다.

알아둬야 할 개념

비트 치환 함수


메서드 체이닝

풀이 2. 삼항 연산자, 리스트 컴프리헨션, join

def solution(N): **#1 함수 정의**
    binary_str = bin(N)[2:] **#2 비트 치환**
    result_str = ''.join(['A' if bit == '1' else 'B' for bit in binary_str]) **#3 삼항 연산자, 리스트 컴프리헨션, join 함수 활용**
    return result_str **#4 비트 문자열 반환**

단계별 풀이 전략

  1. 함수 정의

    코드의 첫 부분에서 solution이라는 함수를 정의합니다. 이 함수는 하나의 인자 N을 받습니다. N은 비트 문자열로 치환하고자 하는 대상이 되는 정수형 객체입니다.

  2. 비트 치환

    bin 함수를 이용하여 정수형 객체인 N을 비트 표현으로 치환하고, 슬라이싱을 통해 2진수 접두어 두 문자를 제거합니다. 그리고 1과 0으로만 이루어진 비트 표현을 binary_str 변수에 할당합니다.