https://programmers.co.kr/learn/courses/30/lessons/17681
구구절절한.. 내코드
trans함수에서 2진수 변환 한뒤에, 1이 들어있는지 하나하나 비교했다.
def trans(n, num):
if num == 1:
return '0'*(n-1) + '1'
if num == 0:
return '0'*n
ret = ''
while True:
if num % 2 == 0:
ret += '0'
else:
ret += '1'
num //= 2
if num == 1:
ret += '1'
return '0'*(n-len(ret)) + ret[::-1]
def solution(n, arr1, arr2):
answer = []
for i in range(n):
map1 = trans(n, arr1[i])
map2 = trans(n, arr2[i])
prt = ''
for i2 in range(n):
if '1' in map1[i2] or '1' in map2[i2]:
prt += '#'
else:
prt += ' '
answer.append(prt)
return answer
✔ 다른 코드
a12 = str(bin(i|j)[2:]) 👉 문제에서 한 지도에 1이 존재하면 #이라고 했으므로 2진수의 각 자리수를 OR연산하는 비트연산자를 사용한다. bin으로 이진수변환하면 맨앞에 'ob'문자가 붙기때문에 잘라줌
a12=a12.rjust(n,'0') 👉 rjust함수로 길이가 n인 문자열을 만들고 a12문자열을 오른쪽으로 몰아넣은 다음 나머지를 0으로 채운다.
파이썬은 별 함수가 다있어서 숏코딩에 항상 놀란다..
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
'알고리즘 > 프로그래머스(Python)' 카테고리의 다른 글
해시 - 베스트 앨범 / 파이썬 (0) | 2020.11.01 |
---|---|
해시 - 전화번호 목록 / 파이썬 (0) | 2020.10.30 |
[알고리즘] 프로그래머스 프렌즈4블록 / python (0) | 2020.05.06 |
[알고리즘] 프로그래머스 뉴스 클러스터링 / python (0) | 2020.05.05 |
[알고리즘] 프로그래머스 징검다리 건너기 / python (0) | 2020.05.04 |