문제 링크 (Level 1)
https://school.programmers.co.kr/learn/courses/30/lessons/17681?language=python3
나의 코드 (Python)
def solution(n, arr1, arr2):
answer = []
tmp1 = [] # 임시저장 배열1
tmp2 = [] # 임시저장 배열2
for i in arr1:
tmp = [] # for 안에서만 쓸 임시 배열
for _ in range(n):
# 이진법으로 변환
num = i % 2
i //= 2
tmp.insert(0, num)
tmp1.append(tmp) # 한 줄씩 저장
for j in arr2:
tmp = [] # for 안에서만 쓸 임시 배열
for _ in range(n):
# 이진법으로 변환
num = j % 2
j //= 2
tmp.insert(0, num)
tmp2.append(tmp) # 한 줄씩 저장
# tmp1과 tmp2를 비교할 이중for문
for a in range(n):
tmp = "" # for안에서만 사용할 임시 string
for b in range(n):
if tmp1[a][b] == 1 or tmp2[a][b] == 1: # 하나라도 벽이면 #
tmp += "#"
else:
tmp += " "
answer.append(tmp) # 한 줄씩 저장
return answer
arr1과 arr2의 벽을 파악하여 비교하는 방법은 두 배열을 이진법으로 먼저 바꿔어 새로운 배열에 각각 저장합니다.
그 다음 이진법으로 바꾼 두 배열을 비교하여 하나라도 1이 있다면 그곳에는 벽이 존재합니다.
둘 다 0인 경우는 벽이 없습니다.
'코딩공부 > 프로그래머스 (python)' 카테고리의 다른 글
[프로그래머스] 약수의 합 (Python) (0) | 2022.07.24 |
---|---|
[프로그래머스] 소수 찾기 (Python) (0) | 2022.07.23 |
[프로그래머스] 2016년 (Python) (0) | 2022.07.19 |
[프로그래머스] 자연수 뒤집어 배열로 만들기 (Python) (0) | 2022.04.25 |
[프로그래머스] 이상한 문자 만들기 (Python) (0) | 2022.04.14 |
댓글