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])
['######', '### #', '## ##', ' #### ', ' #####', '### # ']
'IT관련정보 > 카카오 코딩테스트 1차(2017년)' 카테고리의 다른 글
6. 프렌즈4블록(난이도: 상) - Python3.6.1 (0) | 2018.10.06 |
---|---|
5. 뉴스 클러스터링(난이도: 중) - Python3.6.1 (0) | 2018.10.06 |
4. 셔틀버스(난이도: 중) - Python3.6.1 (0) | 2018.10.06 |
3. 캐시(난이도: 하) - Python3.6.1 (0) | 2018.10.06 |
2. 다트 게임(난이도: 하) - Python3.6.1 (0) | 2018.09.29 |