두 정수 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)
'Python > [코드트리]' 카테고리의 다른 글
[코드트리] 탐색 > 개수 세기 (0) | 2023.06.30 |
---|---|
[코드트리] 탐색 > 특정 위치의 문자 (0) | 2023.06.30 |
[코드트리] Count 배열 > 코로나 메뉴얼 2 (0) | 2023.06.30 |
[코드트리] Count 배열 > 점수대 파악하기 (0) | 2023.06.30 |
[코드트리] Count 배열 > 십의 자리 숫자(★) (0) | 2023.06.30 |