TIL-18アルゴリズム


アルゴリズム#アルゴリズム#


1.次の大きな数字を求める


-nは自然数です。次の自然数はn次の自然数です


−そしてnは、nが2進数である場合に得られる1の個数に等しい。


-次のnは条件1,2を満たす水中の最小数である


コード#コード#
def next_beginner_Number:
    c = bin(n).count('1')     ->  c는 n을 이진법으로 바꾼 n의 1의 갯수
   	for m in range(n+1, 100001):
        if bin(n).count('1') == c:
            return m
          
2番目のコード
def next_begginner_Number(n):
    num1 = bin(n).count('1')
    while True:
        n = n+1
        if num1 == bin(n).count('1'):
            break
        return n
->ここでバイナリを実施するのはちょっとひどいようです.nをバイナリで置換した数のうちの1の個数を探す場合,count=0で1の個数をSlixingして求めようとすると,コードが複雑になる.c = bin(n).count(「1」)文ですぐに入手できることがわかります.

2.掘削


-N行には4項ごとに整数があります。


-次の段ごとに、数字を加えます。


コード#コード#
def solution(n):
    for i in range(1, len([land])):
        for j in range(len(land[0])):
            land[i][j] = max(land[i - 1][:j] + land[i -1][i+1]) + land[i][j]
            return max(land[-1])
->for文は実装されたが,その後ブロックされる.もう少し境界が高ければ理解できるだろうな….

3.数字の表現


−連続自然数の和によりnを表す方法の個数を表す。

def count(n):
	count = 0     -> 연속된 자연수의 합의 갯수
    for i in ranage(1, n + 1):
        s = 0     -> n까지의 합을 구하 기위한 임시 변수
        if s < n:
            s += i
            i += 1
        if s == n:
            count += 1
            
        return count    
->全体的な構造は、自分で作ったものと似ていますが、細部では異なります.もう少し考えれば推測できるはずの質問だったけど急に諦めた間違っていても、考え直す習慣をつける必要があります.