https://school.programmers.co.kr/learn/courses/30/lessons/17681
2018 KAKAO BLIND RECRUITMENT
def solution(n, arr1, arr2):
map_final = ['' for i in range(n)]
for i, (ar1, ar2) in enumerate(zip(arr1, arr2)):
map1 = ''
map2 = ''
for j in range(n):
map1 += str(ar1 % 2)
ar1 = ar1//2
map2 += str(ar2 % 2)
ar2 = ar2//2
map1 = map1[::-1]
map2 = map2[::-1]
for a1, a2 in zip(map1, map2):
if a1 == a2 == '0':
map_final[i] += ' '
else:
map_final[i] += '#'
return map_final
오랜만에 카카오 문제 나오니까 어지러웠다.
기존에 다른 문제 풀면서 익힌 기법들을 하나하나 적용하면서 푸니까 그렇게 어렵지 않았음
타인 코드를 보기 전까진 꽤 잘 짰다고 생각했음
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
뭔소린지 하나도 모르겠어서 검색해봄
아래 예시 코드 보고 이해해보자
a = 46
b = 27
print('bin(a):', bin(a))
print('bin(b):', bin(b))
print('bin(a|b):', bin(a|b))
print('str(bin(a|b))[2:]', str(bin(a|b))[2:])
bin(a): 0b101110
bin(b): 0b11011
bin(a|b): 0b111111
str(bin(a|b))[2:] 111111
bin()
은 비트연산자로 하면 2진수로 변환해주는데 앞에 0b가 붙음 그걸 [2:]로 제거해준 것
bin(a|b)
하면 비트 OR 연산
print('111'.rjust(3,'0'))
print('111'.rjust(4,'0'))
print('111'.rjust(5,'0'))
111
0111
00111
'str'.rjust(n, 's')
는 'str'을 오른쪽으로 밀어넣고 n 길이만큼 부족한 부분을 's'로 채움