# 논리 연산자, 진법 변환
# 매개변수랑 함수내 변수 다르게 하기
def solution(n, arr1, arr2):
result = []
# arr1과 arr2를 zip으로 묶기
for num1, num2 in zip(arr1, arr2):
# 2진수로 바꿔줌
elem = str(bin(num1 | num2))[2:]
# 앞이 0으로 시작하는 2진수가 사라지기 때문에 변의 길이에서 숫자만큼 수를 뺀후 '0'을 곱하고 더함
elem = '0' * (n - len(elem)) + elem
# '1'을 '#'으로 대체
elem.replace('1', '#')
# '0'을 ' '으로 대체
elem.replace('0', ' ')
result.append(elem)
for i in range(len(result)):
buffer = ''
for j in range(len(result[i])):
if result[i][j] == '1':
buffer += '#'
else:
buffer += ' '
result[i] = buffer
return result
로직을 다 구현하고 마지막에 바꿔주는 구문을 안짜서 계속 헤맸었다.
푸는데만 거의 7시간 넘게 걸린것 같다... 다른 사람들 풀이를 보니까 현타가 장난 아니다.ㅎㅎ..
그렇지만 시작한지 얼마 안되어서 당연하다고도 생각하고 더 열심히 해야겠다.
<감명받은 코드 풀이>
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
<배운 것>
오른쪽으로 정렬하도록 도와준다.
rjust를 통해 공백의 수, 공백을 메워줄 문자를 넣어준다.
val = "77".rjust(5, "0")
print(val)
val = "77777".rjust(5, "0")
print(val)
val = "123".rjust(5, "a")
print(val)
val = "123".rjust(3, "a")
print(val)
00077
77777
aa123
123
왼쪽으로 정렬하도록 도와준다.
rjust를 통해 공백의 수, 공백을 메워줄 문자를 넣어준다.
val = "222".ljust(3, "0")
print(val)
val = "222".ljust(15, "a")
print(val)
222
222aaaaaaaaaaaa
0을 왼쪽에 채워주는 역할을 한다.
val = "2".zfill(3)
print(val)
val = "50000".zfill(5)
print(val)
val = "123".zfill(5)
print(val)
002
50000
00123