코딩공부/프로그래머스 (python)
[프로그래머스] [1차] 비밀지도 (Python)
CodingKwon
2022. 7. 21. 00:54
문제 링크 (Level 1)
https://school.programmers.co.kr/learn/courses/30/lessons/17681?language=python3
프로그래머스
코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요.
programmers.co.kr
나의 코드 (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인 경우는 벽이 없습니다.