From ec9e48aafadfdc39c5e016be9558a624cbd221a5 Mon Sep 17 00:00:00 2001 From: bumpsoo Date: Sat, 15 Feb 2025 13:07:12 +0000 Subject: [PATCH] https://leetcode.com/problems/find-the-punishment-number-of-an-integer --- ...ind_the_punishment_number_of_an_integer.py | 22 +++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 medium/find_the_punishment_number_of_an_integer.py diff --git a/medium/find_the_punishment_number_of_an_integer.py b/medium/find_the_punishment_number_of_an_integer.py new file mode 100644 index 0000000..c696796 --- /dev/null +++ b/medium/find_the_punishment_number_of_an_integer.py @@ -0,0 +1,22 @@ +# https://leetcode.com/problems/find-the-punishment-number-of-an-integer + +class Solution: + def punishmentNumber(self, n: int) -> int: + def recurse(v: str, curr_index: int, curr_value: int, target: int): + if curr_index >= len(v): + return curr_value == target + if curr_value > target: + return False + for i in range(curr_index, len(v)): + tmp = curr_value + int(v[curr_index : i + 1]) + if recurse(v, i + 1, tmp, target): + return True + return False + + result = 1 + for i in range(2, n + 1): + v = i * i + if recurse(str(v), 0, 0, i): + result += v + return result +