<aside>
💬 lv0
, 비트 조작
정수 N이 주어집니다. 이 정수의 비트 표현에서 모든 1을 A로, 모든 0을 B로 치환하여 결과를 문자열로 반환하는 코드를 작성해주세요.
입력 (N) | 출력 (비트 문자열) |
---|---|
5 | 'ABA' |
9 | 'ABBA' |
첫 번째 예시에서 5의 이진 표현은 '101'입니다. 여기서 1을 'A'로, 0을 'B'로 치환하면 'ABA'가 됩니다. 두 번째 예시에서 9의 이진 표현은 '1001'이며, 치환 결과는 'ABBA'입니다.
</aside>
def solution(data): **#1 함수 정의**
return bin(data)[2:].replace("0", "B").replace("1", "A") **#2 비트 치환, 메서드 체이닝**
함수 정의
코드의 첫 부분에서 solution
이라는 함수를 정의합니다. 이 함수는 하나의 인자 data
를 받습니다. data
는 비트 문자열로 치환하고자 하는 대상이 되는 정수형 객체입니다.
비트 치환, 메서드 체이닝
bin
함수를 이용하여 정수형 객체인 data
를 비트 표현으로 치환합니다. 이때 나오는 비트 표현 앞에는 2진수를 나타내는 접두어 0b
가 비트 표현 앞에 붙어서 나옵니다.bin(data)[2:]
와 같이 비트 표현을 슬라이싱합니다. 슬라이싱되어 나온 비트 표현의 0과 1을 메서드 체이닝을 통해 순차적으로 B와 A로 치환해 줍니다.replace
메서드를 이용해 비트 표현에서 0인 부분을 B로 치환합니다.replace
메서드를 이어지게 하여 비트 표현의 나머지 1인 부분을 A로 치환해서 비트 문자열을 완성합니다.비트 치환 함수
기본 형태: 주어진 10진수 숫자를 각 진수로 치환하는 함수
(정수형 객체 또는 10진수 숫자)
개념: 비트 치환 함수는 정수형 객체 또는 10진수 숫자를 필요한 진수 단위로 치환합니다. 대표적인 비트 치환 함수는 대표적으로 2진수로 치환하는 bin
, 8진수로 치환하는 oct
, 16진수로 치환하는 hex
가 있습니다.
# 10진수(decimal number) -> 2진수(binary number)
bin(4) # 0b100 # 0b는 2진수를 의미하는 접두어
# 10진수 -> 8진수(octal number)
oct(9) # 0o11 # 0o는 8진수를 의미하는 접두어
# 10진수 -> 16진수(hexadecimal number)
hex(7) # 0x13 # 0x는 16진수를 의미하는 접두어
# 2진수 -> 10진수
int('0b100', 2) # 4
# 8진수 -> 10진수
int('0o11', 8) # 9
# 16진수 -> 10진수
int('0x13', 16) # 19
메서드 체이닝
기본 형태: 데이터.메서드1.메서드2...
개념: 메서드 체이닝은 객체 또는 배열 뒤에 메서드를 체인처럼 여러 개 달아서 사용하는 것을 말합니다. 첫 번째 메서드는 데이터의 자료형이 해당 메서드를 가지고 있어야 사용할 수 있습니다. 그리고 메서드 체이닝에서는 앞의 메서드의 실행 결과 나오는 자료형이 그다음에 오는 메서드를 가지고 있어야 그다음에 이어지는 메서드가 동작합니다. 그렇지 않다면 오류가 발생합니다.
# 메서드 체이닝이 성공적으로 작동하는 경우
data = 5
binary_data = bin(data)[2:]
type(binary_data) # str
binary_data.replace('1','A').replace('0', 'B')
type(binary_data.replace('1','A')) # str
# 메서드 체이닝에서 오류가 발생하는 경우
l = [1, 2, 3, 4]
l.append(6).sort() # 오류명: AttributeError: 'NoneType' object has no attribute 'sort'
type(l.append(6)) # NoneType => l.append(6)는 배열 l에 6을 추가해 줬지만 반환은 아무것도 반환하지 않아서 NoneType으로 나옴
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 비트 문자열 반환**
함수 정의
코드의 첫 부분에서 solution
이라는 함수를 정의합니다. 이 함수는 하나의 인자 N
을 받습니다. N
은 비트 문자열로 치환하고자 하는 대상이 되는 정수형 객체입니다.
비트 치환
bin
함수를 이용하여 정수형 객체인 N
을 비트 표현으로 치환하고, 슬라이싱을 통해 2진수 접두어 두 문자를 제거합니다. 그리고 1과 0으로만 이루어진 비트 표현을 binary_str
변수에 할당합니다.