문제
2018년도 카카오 1차 문제 중 1번 문제인 비밀지도 를 풀었습니다. 간단한 문제로, 구현해야 하는 내용은 다음과 같습니다.
- 어떤 수가 주어졌을 때 이를 이진수로 만들 수 있는가?
- and와 or을 사용할 수 있는가?
정답률은 81.78%였다고 합니다.
풀이
파이썬 내장함수를 사용하지 않고 + bitwise 없이 푸는 법은 다음과 같습니다.
def make2(num,n) :
arr = [0]*n
idx = n-1
while num >= 1 :
arr[idx] = num%2
num//=2
idx-=1
return arr
def solution(n, arr1, arr2):
answer = []
for idx in range(n) :
tempArr1 = make2(arr1[idx],n)
tempArr2 = make2(arr2[idx],n)
tempAns = ""
for i in range(n) :
if tempArr1[i] == 1 or tempArr2[i] == 1 :
tempAns+='#'
else :
tempAns+=' '
answer.append(tempAns)
return answer
파이썬 내장함수와 bitwise를 사용하는 풀이는 다음과 같습니다.
def solution(n, arr1, arr2):
answer = []
for idx in range(n) :
res = bin(arr1[idx] | arr2[idx])[2:]
ans = '0'*(n-len(res))+res
ans = ans.replace('1','#')
ans = ans.replace('0',' ')
answer.append(ans)
return answer