내일배움캠프 AI/페어프로그래밍

[페어프로그래밍] 230501 비밀지도 | bin Zfill

생각하는 코댕이 2023. 5. 2. 14:59
728x90

비밀지도


페어프로그래밍 결과 코드

# 페어프로그래밍으로 제작한 코드
def solution(n, arr1, arr2):
    answer = []
    # 정수를 이진수로 만들고 리스트에 넣기
    arr1_ = []
    arr2_ = []
    # 리스트의 인덱스를 돌면서 2진수로 만들고 리스트에 append             (x,y)
    for i in range(n):
        # ['1001', '10100', '11100', '10010', '1011']-> zfill ['01001', '10100', '11100', '10010', '01011']
        arr1_.append(bin(arr1[i])[2:].zfill(n))
        # ['11110', '1', '10101', '10001', '11100']-> zfill ['11110', '00001', '10101', '10001', '11100']
        arr2_.append(bin(arr2[i])[2:].zfill(n))

        Map = ''
        # 2진수로 변환한 리스트의 요소에 1이 있으면 벽이 있다 => #
        # 이외는 빈 ''로 처리
        for j in range(n):
            if arr1_[i][j] == '1' or arr2_[i][j] == '1':
                Map += '#'
# i : 0~n-1
# j : 0~n-1
            else:
                Map += ' '

        answer.append(Map)
    return answer

리팩토링 코드

# 리팩토링 | 다중할당 변수명수정
def solution(n, arr1, arr2):
    answer,arr1_,arr2_ = [],[],[]
    for i in range(n):
        arr1_.append(bin(arr1[i])[2:].zfill(n))
        arr2_.append(bin(arr2[i])[2:].zfill(n))
        map_ = ''
        for j in range(n):
            if arr1_[i][j] == '1' or arr2_[i][j] == '1':
                map_ += '#'
            else:
                map_ += ' '
        answer.append(map_)
    return answer

흠터레스팅 코드

#  비트연산자 zip rjust replace
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

시사점 or 새로이 알게된 점

문자열의 자릿수를 맞추는 방법
<str>.zfill(n) → 자릿수를 n으로 맞추며 부족한 부분을 0(zero)으로 채워준다. ex) '15'.zfill(4) → '0015'

<str>.rjust(n,'x') → 자릿수를 n으로 맞추며 부족한 부분을 x로 채워준다. ex) '15'.rjust(4,'0') → '0015'
728x90