728x90
def solution(n, arr1, arr2):
total = []
# arr1과 arr2를 bit wise OR한 값 -> 2진수로 만듦 -> '0b'값 삭제 -> 나머지 0으로 채우기
for i in range(n):
b = bin(arr1[i]|arr2[i]).replace('0b', '').zfill(n)
total.append(b)
#'1'=>'#', '0'=>' ' 대체한 값 반환
return [line.replace('1', '#').replace('0', ' ') for line in total]
<내 풀이 분석>
1. arr1과 arr2를 합치기 위해 비트연산자OR을 사용한다. => (arr1 | arr2)
2. bin함수로 2진수로 변환된 문자열을 얻는다. => ex) "0b00101"
3. 필요없는 문자열 '0b'값을 삭제한다. => ex) "00101"
4. 문자열 길이를 n으로 맞추고, 나머지를 0으로 채운다. => zfill(n)
5. 1을 #으로, 0을 ' '(빈문자열)로 대체한 값의 리스트를 반환한다.
+) 조금 개선한 풀이
def solution(n, arr1, arr2):
answer = []
for i in range(n):
# arr1과 arr2를 bit wise OR한 값 -> 2진수로 만듦 -> '0b' 삭제 -> 나머지 0으로 채우기
b = bin(arr1[i]|arr2[i]).replace('0b', '').zfill(n)
#'1'=>'#', '0'=>' ' 대체
answer.append(b.replace('1', '#').replace('0', ' '))
return answer
for문을 한 번만 돌아도 원하는 값이 나올 수 있는데 생각을 못했던 것 같다. 다음엔 for문 개수를 줄이려고 노력해봐야겠다.
728x90
'알고리즘 > programmers[1]' 카테고리의 다른 글
[프로그래머스] 가운데 글자 가져오기: python (0) | 2022.01.23 |
---|---|
[프로그래머스] 콜라츠 추측: python3 (0) | 2022.01.23 |
[프로그래머스] 부족한 금액 계산하기: python3 (0) | 2022.01.22 |
[프로그래머스] 나머지가 1이 되는 수 찾기: python3 (0) | 2022.01.22 |
[프로그래머스] 최소직사각형 다른 풀이 (0) | 2022.01.22 |