l에서 r까지(둘 다 포함) 번호가 매겨진 n개의 공이 있고 1에서 무한대까지 번호가 매겨진 무한한 수의 상자가 있는 공 공장이 있다고 가정합니다. 따라서 각 공을 공 번호의 자릿수 합과 동일한 번호로 상자에 넣으면. (예를 들어, 공 번호 123은 상자 번호 1 + 2 + 3 =6에 넣을 것입니다). 따라서 두 개의 값 l과 r이 있는 경우 가장 많은 공이 있는 상자에서 공의 수를 찾아야 합니다.
따라서 입력이 l =15 r =25와 같으면 출력은
이기 때문에 2가 됩니다.-
공 번호 15는 1+5 =6 안에 들어갈 것입니다.
-
16번 공은 1+6 =7 안에 들어갈 것입니다.
-
공 번호 17은 1+7 =8 안에 들어갈 것입니다.
-
공 번호 18은 1+8 =9 안에 들어갈 것입니다.
-
공 번호 19는 1+9 =10 안에 놓입니다.
-
공 번호 20은 2+0 =2 안에 들어갈 것입니다.
-
공 번호 21은 2+1 =3 안에 들어갈 것입니다.
-
공 번호 22는 2+2 =4 안에 들어갈 것입니다.
-
공 번호 23은 2+3 =5 안에 들어갈 것입니다.
-
공 번호 24는 2+4 =6 안에 들어갈 것입니다.
-
공 번호 25는 2+5 =7 안에 들어갈 것입니다.
따라서 상자 6과 7에는 최대 공 수가 포함되어 있으므로 답은 2입니다.
이 문제를 해결하기 위해 다음 단계를 따릅니다. −
-
dict:=새 지도
-
범위 l에서 r에 있는 i에 대해 수행
-
총계:=0
-
i의 각 숫자 j에 대해 수행
-
총계 :=총계 + j
-
-
total이 dict에 없으면
-
사전[총] :=0
-
-
사전[총] :=사전[총] + 1
-
-
dict의 모든 키에 대한 모든 값의 최대값 반환
예제(파이썬)
이해를 돕기 위해 다음 구현을 살펴보겠습니다. −
def solve(l, r): dict={} for i in range(l, r+1): total=0 for j in str(i): total += int(j) if(total not in dict): dict[total] = 0 dict[total] += 1 return max([dict[i] for i in dict]) l = 15 r = 25 print(solve(l, r))
입력
15, 25
출력
1