취뽀 기록

#열심히 살자 #취업 #공부

Python/[코드트리]

[코드트리] Count 배열 > 나눗셈의 나머지

hyunnn_00 2023. 6. 30. 13:32
두 정수 a, b가 주어지면, a를 b로 나눈 몫을 a에 계속해서 저장하는 것을 반복하려고 합니다.
a가 1이하가 되기 전 까지 나눗셈을 반복한다고 할 때, 각 나눗셈 연산마다 나온 나머지들이 등장한 횟수를 제곱하여 그 합을 출력하는 프로그램을 작성해보세요.

 

예를 들어, a = 1000, b = 4인 경우 나눗셈은 다음과 같이 진행됩니다.

  •  ... 0
  •  ... 2
  •  ... 2
  •  ... 3
  •  ... 3
5번의 나눗셈 동안 나머지는 0이 1번, 2가 2번, 3이 2번 등장했으므로, 각 나머지가 나온 횟수의 제곱의 합은  입니다.

 

# 변수 입력받기
a, b = tuple(map(int, input().split()))
count_arr = [0] * 10
ans = 0
	
# a가 1 이하가 될 때 까지 나누면서 나머지를 count배열에 저장하기
while a > 1:
    count_arr[a % b] += 1
    a //= b
	
# 나머지가 나온 횟수를 구해 정답 구하기
for elem in count_arr:
    ans += elem ** 2

# 출력
print(ans)

# 나의 풀이 -----------------------------------------
inp = input().split()
a = int(inp[0])
b = int(inp[1])
sum_val = 0

cnt_arr = [0] * 10 # 나머지는 0부터 9까지 나올 수 있으므로 크기가 10인 배열 선언

while a > 1: # a가 1이 아닐 때 
    cnt_arr[a % b] += 1 # 나머지가 나올 때마다 1씩 증가시킴
    a //= b # a 를 계속 b로 나눔

for i in cnt_arr: # cnt_arr 안에 있는 원소들을
    sum_val += i**2 # 제곱하여 sum_val 안에 저장
    
print(sum_val)