문제 자체는 쉽게 이해할 수 있었다. 지도의 모양이 그려질 힌트가 담긴 배열 arr1, arr2가 정수로 리스트에 저장되어 주어진다. 이를 이진법으로 변환해서 OR 연산한 결과가 내가 만들어야하는 배열이라는 문제였다. 그런데 두 가지 작은 문제가 있었는데,
→ 이는 리스트 슬라이싱을 통해 '0b'를 날리는 방식으로 해결했다.
→ 그래서 빈 리스트에 1.의 결과 값들을 저장해두고, 각 행의 이진수로 변환된 값이 행렬의 크기(지도의 길이 n과 동일)보다 작으면 앞에서 자릿수를 맞춰주기위해 '0'을 삽입하는 방식을 사용했다.
나중에 알았지만 이 문제는 rjust(), ljust(), zfill()을 사용하면 훨씬 간단하게 해결할 수 있었다😅
def solution(n, arr1, arr2):
stack = []
answer = []
for i in range(n):
stack.append(bin(arr1[i] | arr2[i])[2:])
for i in stack:
while len(i)<n:
i = '0' + i
i = i.replace('1', '#')
i = i.replace('0', ' ')
answer.append(i)
return answer
def solution(n, arr1, arr2):
answer = []
for i,j in zip(arr1,arr2):
a12 = str(bin(i|j)[2:])
a12=a12.rjust(n,'0')
a12=a12.replace('1','#')
a12=a12.replace('0',' ')
answer.append(a12)
return answer
>>> bin(42)
'0b101010'
>>> oct(42)
'0o52'
>>> hex(42)
'0x2a'
>>> int('0b101010', 2)
42
>>> int('0o52', 8)
42
>>> int('0x2a', 16)
rjust()은 오른쪽으로 정렬하도록 도와줌 rjust를 통해 공백의 수, 공백을 메워줄 문자를 넣어줌
ljust()은 rjust()와 동일하고, 왼쪽 정렬
zfill()은 0을 왼쪽에 채워주는 역할
>>> print("77".rjust(5, "0"))
00077
>>> print("77".ljust(5,"0"))
77000
>>> print("77".zfill(3))
077
잘 보다 갑니다