Level 1. [1차]비밀지도

Pear_Mh·2021년 6월 16일
0

Programmers-Level 1.

목록 보기
20/49

20. 비밀지도

코딩테스트 연습 > 2018 KAKAO BLIND RECRUITMENT > 비밀지도
https://programmers.co.kr/learn/courses/30/lessons/17681


문제 정리

Input value =

  • n: 한 변의 크기

  • arr1, arr2 = 정수 리스트(10진수)

  1. n*n의 크기를 가지는 영 리스트를 만든다.

  2. arr1,arr2 리스트의 원소들을 2진화 한다.

  3. 각 리스트 내의 리스트 마다 길이가 n이 되도록 0을 추가한다.

  4. 이중 for문을 이용하여,

4-1. if arr1(i)(j) == 1 or arr2(i)(j) == 1 일 경우, cnt +='#'

4-2. 아닐 경우, cnt += ' '

이 때, result는 반복문을 돌 때마다 초기화 되며,answer값에 append시킨다.


제한 조건

ㆍ 1 ≦ n ≦ 16

ㆍ arr1, arr2는 길이 n인 정수 배열로 주어진다.

ㆍ 정수 배열의 각 원소 xx를 이진수로 변환했을 때의 길이는 nn 이하이다. 즉, 0x2n10 ≦ x ≦ 2^n - 1을 만족한다.


풀이 방법

n = 5
arr1,arr2 = [9, 20, 28, 18, 11],[30, 1, 21, 17, 28]

def bins(arr):
    for i in range(len(arr)):
        arr[i] = format(arr[i],'b')
        if len(arr[i])<len(arr):
            arr[i] = str(0)*(len(arr)-len(arr[i]))+arr[i]
    return arr

def solution(n,arr1,arr2):
    answer = []
    arr1,arr2 = bins(arr1),bins(arr2)

    for i in range(n):
        cnt = ''
        for j in range(n):
            if arr1[i][j]=='1' or arr2[i][j]=='1':
                cnt+='#'
            else:
                cnt+=' '
        answer.append(cnt)
    return answer

# Code test
n,arr1,arr2 = 5,[9, 20, 28, 18, 11],[30, 1, 21, 17, 28]
solution(n,arr1,arr2)
profile
Beyond the new era.

0개의 댓글