[プログラマLV 2]数字の表示
3515 ワード
質問する
この問題はいくら解いても効率的ではない.原因を知る前に、私が近づく方法について、
数字を表す方法は数字です.
2つの数字で表現できる方法があると思います⋯Nつの数字で表現します.
N個の数字は、1から増加し続け、現在確認すべき数よりも数字(1からN)の合計が大きくなると、
切る方法で作りました.
次いで、必要な
target
を表す連続数字の第1の値i
を、数字Nに従ってtarget
から1target == sum( i, i + n )
に下げ、countを1、nを1増加させる.targetが0に減っても出ない場合、nは1増加する.
方法
n
)は次のとおりです.一つの表現方法で自分を表現する.
2つの表現方法は、nが奇数の場合に見つけることができ、初期値は
(n / 2)
である.(n/2, n/2 + 1)
である.初期値を求める変数
i
は1
からn // 2
に増加した. for i in range(1, n // 2 + 1)
# i는 초기 값
連続する数値の和がnより大きいまで文をループします.連続数字の和を求める方法は
sum_value = i + (i + 1) + (i + 2) ⋯
に等しい sum_value = 0
while sum_valne <= n:
sum_value += i
i += 1
if sum_value == n:
count += 1
break
コード#コード#
def solution(n):
count = 0
for i in range(1, n // 2 + 1):
sum_value = 0
while sum_value <= n:
sum_value += i
i += 1
if sum_value == n:
count += 1
break
return count + 1
Reference
この問題について([プログラマLV 2]数字の表示), 我々は、より多くの情報をここで見つけました https://velog.io/@jwisgenius/프로그래머스-LV2-숫자의-표현テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol