[프로그래머스] Python [1차] 비밀지도 Level1 - 2018 KAKAO BLIND RECRUITMENT

swb·2024년 1월 22일

프로그래머스

목록 보기
10/23

문제 바로가기

접근 방법

  1. 이진수를 16진수로 변환한다.
  2. 16진수로 2차원 배열을 만든다.
  3. 생성된 2개의 배열을 합친다.

해설

  1. 16진수로 변환하는 내장함수가 있다. format
  2. 16진수로 변환될 때 문자열로 변환해 주어야 하는데 예를 들어 2인 경우에는 10 으로 변환되에 앞에 0을 채워줘야 한다.
  3. 그렇게 만들어진 문자열을 배열로 변환한다.(2차원 배열을 보고 합쳐야 하기 때문)
  4. 만들어진 2개의 배열을 보고 하나라도 1이면 #으로 또 다른 배열을 하나 만든다. 그 외의 경우는 공백으로 한다.
  5. 배열을 문자열로 치환!

코드

def intTobinary(n, arr):
    binaryNum = format(int(arr), 'b')
    binaryNum = str(binaryNum)

    if len(binaryNum) < n:
        for i in range(n - len(binaryNum)):
            binaryNum = '0' + binaryNum

    return list(binaryNum)

def solution(n, arr1, arr2):
    graph1 = []
    graph2 = []
    answer = [[0] * n for _ in range(n)]

    for arr in arr1:
        binaryNum = intTobinary(n, arr)
        graph1.append(binaryNum)

    for arr in arr2:
        binaryNum = intTobinary(n, arr)
        graph2.append(binaryNum)

    for i in range(n):
        for j in range(n):
            if graph1[i][j] == '1' or graph2[i][j] == '1':
                answer[i][j] = '#'
            else:
                answer[i][j] = ' '
        answer[i] = ''.join(answer[i])
    return answer
profile
개발 시작

0개의 댓글