반응형
풀이
def solution(n, arr1, arr2):
answer = []
for i in range(n):
bi = bin(arr1[i] | arr2[i])
tmp = ""
if len(bi) < n+2:
tmp += " " * (n+2 - len(bi))
for b in range(2, len(bi)):
if bi[b] == '1':
tmp += "#"
elif bi[b] == '0': tmp += " "
answer.append(tmp)
return answer
다른 사람의 풀이
solution = lambda n, arr1, arr2:(
[''.join(map(lambda x: '#'
if x=='1' else ' ', "{0:b}".format(row).zfill(n)))
for row in (a|b for a, b in zip(arr1, arr2))
]
)
for i, j in zip(arr1, arr2)
zfill(width) str.zfill(width)
: 앞에 0 채움
0대신 다른 문자열로 채울려면 rjust() 사용해야한다
bin(a) == "{0:b}".format(a)
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() str.rjust(width[, fillchar])
: 문자열을 반환 이전 정렬 오른쪽 길이 폭의 새로운 문자열에 공백이있는 패딩. 길이가 문자열의 길이보다 작다면 원래의 문자열을 반환한다.
zfill 에서는 채울 문자열을 지정할 수 ㅇ
import re
def solution(n, arr1, arr2):
answer = ["#"]*n
for i in range(0, n):
answer[i] = str(bin(arr1[i]|arr2[i]))[2:]
answer[i] = re.sub('1', '#', '0'*(n-len(answer[i]))+answer[i])
answer[i] = re.sub('0', ' ', answer[i])
return answer
re.sub()
- re.sub('패턴', '바꿀문자열', '문자열')
- re.sub('패턴', '바꿀문자열', '문자열', 바꿀횟수)
예시 )
re.sub('[0-9]+', 'n', '데구리가 2번 데굴데굴 20번 데굴데굴')
>> 데구리가 n번 데굴데굴 n번 데굴데굴
- re.sub('패턴', 교체함수, '문자열', 바꿀횟수)
def multi_ten(m):
n = int(m.group())
return str(n * 10)
re.sub('[0-9]+', multi_ten, '데구리가 2번 데굴데굴 20번 데굴데굴')
>> '데구리가 20번 데굴데굴 200번 데굴데굴'
728x90
반응형
'개발 > Algorithm 문제 풀이' 카테고리의 다른 글
[Python] 카카오 2018 - 방금 그 곡 (0) | 2020.08.19 |
---|---|
[Python] Dictionary 정렬 (0) | 2020.08.19 |
[Python] 카카오 2019 채용 - 후보키 (0) | 2020.08.18 |
[Python] 카카오 2018 채용 - 다트게임 (0) | 2020.08.17 |
[Python] 카카오 2019 인턴쉽 - 인형 뽑기 게임 (0) | 2020.08.16 |