Lv.1) [1차] 비밀지도
문제 설명 📝

입출력 예시 📌
매개변수 | 값 |
---|
n | 5 |
arr1 | [9, 20, 28, 18, 11] |
arr2 | [30, 1, 21, 17, 28] |
출력 | ["#####", "# # #", "### #", "# ##", "#####"] |
매개변수 | 값 |
---|
n | 6 |
arr1 | [46, 33, 33, 22, 31, 50] |
arr2 | [27, 56, 19, 14, 14, 10] |
출력 | ["######", "### #", "## ##", " #### ", " #####", "### # "] |
코드 풀이 💡
def solution(n, arr1, arr2):
arr1_2=[]
arr2_2=[]
def binary(a, n):
ternary = ""
while a > 0:
a, remaider = divmod(a, 2)
ternary += str(remaider)
return ternary[::-1].zfill(n)
for i in arr1:
arr1_2.append(binary(i, n))
for i in arr2:
arr2_2.append(binary(i, n))
sums = []
for i in range(len(arr1_2)):
sums.append("".join("1" if a == "1" or b == "1" else "0" for a, b in zip(arr1_2[i], arr2_2[i])))
answer = []
st = ""
for i in sums:
st = ""
for j in i:
st += "#" if j != "0" else " "
answer.append(st)
return answer
🔍 코드 설명
zfil()
: 0을 왼쪽에 채워줍니다.
bin()
: 전달받은 숫자를 이진수 문자열로 돌려준다. ex) "Ox0001" => bin(n)[2:] = "0001"
다른 사람의 풀이 ✨
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(i|j)
: 비트 OR 연산으로 두 숫자의 이진수를 합칩니다.
rjust(총 길이, "공백을 메워줄 문자")
: 오른쪽으로 정렬하도록 하며 공백의 수, 공백을 메워줄 문자를 넣어줍니다.
🔗 프로그래머스 문제 링크