내일배움캠프 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