문제
https://school.programmers.co.kr/learn/courses/30/lessons/17681?language=python3
설계
- bin 함수를 유용하게 사용했다.
- map1과 map2를 생성하는 코드가 같아 하나로 묶고 싶었다.
# 처음 제출 코드
def solution(n, arr1, arr2):
map1, map2 = [], []
# map1 생성
for i in range(n):
data = list(bin(arr1[i])) # ex) 0b10100
data.pop(0) # 앞에 수식어 2개 제거
data.pop(0)
for x in range(len(data)):
data[x] = int(data[x])
while len(data) < n:
data.insert(0, 0) # 0번째 index에 0 추가
map1.append(data)
# map2 생성
for i in range(n):
data = list(bin(arr2[i])) # ex) 0b10100
data.pop(0) # 앞에 수식어 2개 제거
data.pop(0)
for x in range(len(data)):
data[x] = int(data[x])
while len(data) < n:
data.insert(0, 0) # 0번째 index에 0 추가
map2.append(data)
# map1, map2 대조
answer = []
for i in range(n):
bucket = []
for j in range(n):
if map1[i][j] or map2[i][j]:
bucket.append('#')
else:
bucket.append(' ')
bucket = ''.join(bucket)
answer.append(bucket)
return answer
- 아래와 같이 따로 함수를 만들어 리팩토링했다.
def createMap(map, arr, n):
for i in range(n):
data = list(bin(arr[i])) # ex) 0b10100
data.pop(0) # 앞에 수식어 2개 제거
data.pop(0)
for x in range(len(data)):
data[x] = int(data[x])
while len(data) < n:
data.insert(0, 0) # 0번째 index에 0 추가
map.append(data)
return map
def solution(n, arr1, arr2):
map1, map2 = [], []
map1 = createMap(map1, arr1, n) # map1 생성
map2 = createMap(map2, arr2, n) # map2 생성
# map1, map2 대조
answer = []
for i in range(n):
bucket = []
for j in range(n):
if map1[i][j] or map2[i][j]:
bucket.append('#')
else:
bucket.append(' ')
bucket = ''.join(bucket)
answer.append(bucket)
return answer
'PS (Problem Solving) > Programmers' 카테고리의 다른 글
[프로그래머스] 게임 맵 최단거리 (0) | 2022.08.24 |
---|---|
[프로그래머스] 성격 유형 검사하기 (0) | 2022.08.23 |
[프로그래머스] 약수의 개수와 덧셈 (0) | 2022.08.16 |
[프로그래머스] 폰켓몬 (0) | 2022.08.15 |
[프로그래머스] 로또의 최고 순위와 최저 순위 (0) | 2022.08.14 |