본문 바로가기

IT관련정보/카카오 코딩테스트 1차(2017년)

1. 비밀 지도(난이도: 하) - Python3.6.1

1.풀이방법


숫자 0 - False / 나머지(1) - True

0+0 = 0 ->  False + False = False

0+1 = 1 ->  False + True = True

1+0 = 1 ->  True + False = True

1+1 = 1 ->  True + True = True

비트연산자 OR( | )를 사용한다.


2.코드


def Question1(n,arr1,arr2):

    if n < 1 or n > 16: #1

        return 'out of range!'

    arr = []

    for i in range(n): #2

        temp_str = format(arr1[i]|arr2[i],str(n)+'b') #3

        temp_str = temp_str.replace('0',' ') #4

        temp_str = temp_str.replace('1','#') #5

        arr.append(temp_str) #6

    return arr


3.코드설명


#1 n의 범위조건을 설정한다.

#2 n만큼 반복문을 돌린다.

#3 arr1과arr2를 비트연산자(OR)를 이용해 더하고 n자리만큼 2진수로 변환해 변수에 담는다.

#4 변환된 2진수에서 0은 공백으로 처리 후 변수에 담는다.

#5 변환된 2진수에서 1은 #으로 처리 후 변수에 담는다.

#6 변수를 배열에 추가한다.


4.결과


>>> Question1(5,[9, 20, 28, 18, 11],[30, 1, 21, 17, 28])

['#####', '# # #', '### #', '#  ##', '#####']

>>> Question1(6,[46, 33, 33 ,22, 31, 50],[27 ,56, 19, 14, 14, 10])

['######', '###  #', '##  ##', ' #### ', ' #####', '### # ']