""" 1번: 나의 풀이 """
def solution(n, arr1, arr2):
secret_map = list(map(lambda x: format(x[0]|x[1], 'b'), zip(arr1, arr2)))
answer = []
for s in secret_map:
tmp = ''
while len(s) < n:
s = '0'+s
for b in s:
if b == '1':
tmp += '#'
else:
tmp += ' '
answer.append(tmp)
return answer
""" 2번: 다른 사람의 풀이(rjust, replace 활용) """
def solution2(n, arr1, arr2):
answer = []
for i in range(n):
a = str(bin(arr1[i]|arr2[i])[2:]).rjust(n, '0').replace('1','#').replace('0',' ')
answer.append(a)
return answer
""" 3번: 다른 사람의 풀이(zfill 활용) """
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))])
- 확인하기!
- rjust, replace, zfill 등의 함수를 익혔다. 필요할 때 자주 써먹자!
- str.rjust(width, fillchar): fillchar를 "width-len(str)"만큼 채워준다 (2번 풀이 참고)
- str.replace(old, new): 문자열 내 old char를 new char로 바꿔준다 (2번 풀이 참고)
- str.zfill(n): 문자열 앞으로 '0'(zero)를 "n-len(str)"만큼 채워준다 (3번 풀이 참고)
- "{0:b}".format(int number): number를 2진수 문자열로 변환해준다
- 자매품: "정수: {0:d}, 8진수: {0:o}, 16진수: {0:x}"
'> 알고리즘 문제 풀이 > 프로그래머스' 카테고리의 다른 글
1v1- 최대공약수와 최소공배수 (python, 파이썬) (0) | 2020.10.24 |
---|---|
lv1-콜라츠 추측 (python, 파이썬) (0) | 2020.10.22 |
lv1-시저 암호 (python, 파이썬) (0) | 2020.10.22 |
lv1-3진법 뒤집기 (python, 파이썬) (0) | 2020.10.22 |
lv1-예산 (python, 파이썬) (0) | 2020.10.22 |
댓글