2023.01.17 코딩 테스트 공부 기록 입니다.
🤑풀이
import numpy as np
from collections import deque
def solution(arr) :
matrix_lst = deque([np.array(arr)])
zero_cnt, one_cnt = 0, 0
while len(matrix_lst) > 0 :
check = matrix_lst.popleft()
# 모두 1인지 확인
if check.sum() == len(check)**2 :
one_cnt += 1
# 모두 0인지 확인
elif check.sum() == 0 :
zero_cnt += 1
# 둘다 아니면 구간 분할
else :
l = len(check)
if l == 1 :
if check.sum() == 0 :
zero_cnt += 1
else :
one_cnt += 1
else :
top_left, top_right = check[:l//2, :l//2], check[:l//2 , l//2:]
botton_left, bottom_right = check[l//2:, :l//2], check[l//2:, l//2:]
matrix_lst.extend([top_left, top_right, botton_left, bottom_right])
return [zero_cnt, one_cnt]
👩🏫 아이디어
🤑풀이
def solution(n) :
l, sum_l, m = 0, 0, n
# l : 자리수, m : 구한 자리수(l)에서 몇 번 째 숫자인지
while True :
l += 1
sum_l += 3**l
m -= 3**l
if sum_l >= n :
break
m = m-1
num_lst = ""
hash = {0 : '1', 1 : '2', 2 : "4"}
for i in list(range(l)) :
m, mod = divmod(m, 3)
num_lst += hash[mod]
return num_lst[::-1]
👩🏫 아이디어
(1) : 자리수 찾기
(2) : 각 자리수의 숫자 찾기
(3) : 문제의 조건대로 변환하기