본문 바로가기
코딩공부/프로그래머스 (python)

[프로그래머스] [1차] 비밀지도 (Python)

by CodingKwon 2022. 7. 21.

문제 링크 (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인 경우는 벽이 없습니다.

 

댓글