1. 설계 로직
N의 범위가 1~16이라 완전탐색 문제라고 생각했습니다.
각각의 arr들을 이진수로 변환합니다.
이진수로 변환된 맵을 하나씩 확인하면서 맵 합칩니다.
0
: 공백,1
: 벽- 두가지 맵 중 하나라도
1
이면1
- 두가지 맵 모두
0
이면0
0
인 경우 공백으로 나타내고,1
인경우#
으로 나타내어 출력합니다.
- 시간복잡도: O(N^2)
2. 코드
def solution(n, arr1, arr2):
def trans_map(arr):
new_arr = []
for i in range(n):
val = ''.join(bin(arr[i]))[2:]
while len(val) < n:
val = '0' + val
new_arr.append(val)
return new_arr
def add_map(map1, map2):
new = []
for y in range(n):
line = ''
for x in range(n):
if map1[y][x] == map2[y][x] and map1[y][x] == '0':
line += ' '
else:
line += '#'
new.append(line)
return new
new1, new2 = trans_map(arr1), trans_map(arr2)
return add_map(new1, new2)
3. 후기
저는 n개의 요소를 가진 map형식을 맞춰주기 위해 while
문을 사용했는데, 다른 사람 중 rjust
를 사용한 사람의 풀이를 보고 감탄해서 가져왔습니다.
[감탄 이유]
비트 연산자 사용 (
or 연산자
)rjust
가 뭔지 몰랐음zip
과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
rjust
: 원하는 문자와 갯수를 지정할 수 있음
https://kkamikoon.tistory.com/136
해당 블로그에서는 rjust
, zfill
에 대해서 설명해주는데, zfill
은 예전에 써봤는데, rjust
는 아예 처음봐서 풀이 보고 감탄했습니다 ~!
'Algorithm > Python' 카테고리의 다른 글
[python] 17685 자동완성 - 카카오 2018 3차 (1) | 2021.07.05 |
---|---|
[백준 1005] ACM Craft (0) | 2021.07.05 |
[python] 17677 뉴스 클러스터링 - 카카오 2018 1차 (0) | 2021.07.04 |
[python] 17678 셔틀버스 - 카카오 2018 1차 (0) | 2021.07.04 |
[백준 2751] 수 정렬하기 2 (0) | 2021.07.04 |