[TIL]階調アルゴリズム


今日は昨日見たGRADYアルゴリズムのビデオを見た後、伯俊でGRADYに関する質問に答えました.この文章では、ビデオに出てくる問題を整理し、他の文章では白俊の問題を整理した.

質問2:乗算または加算


左からすべての数字の間に+またはxを加えて最大数を求めるプログラム.演算子が何であれ、すべての演算は左から右に順番に行われます.
  • ソリューション:xは+よりも大きいため、2つのオプションのうちの1つが1未満の場合、xが使用されます.
  • 質問3:冒険者組合問題


    恐怖度xの冒険者がx名以上の冒険者グループに参加しなければ旅に出られない場合、n名の容疑者から旅行グループの最低価格を得る
  • 解決策:冒険図を昇順に並べ、恐怖度の低い人からチームを組む.
  • import sys
    N=int(sys.stdin.readline().strip())
    numli=[]
    numli=list(map(int, sys.stdin.readline().split()))
    numli.sort()
    person=0
    cnt=0
    for i in range(N):
        person+=1
        if numli[i]<=person:
            cnt+=1
            person=0
    print(cnt)

    <実装の問題>


    実装タイプの問題は解決策を容易に考えられるが、ソースコードに移行するのは難しい.
    ex)
    アルゴリズムは簡単ですが、コード長の問題です.
    実数演算小数点以下の桁数に印刷する問題
    特定の条件に基づいて文字列を切断して処理しなければならない問題
    リポジトリの問題の検索と使用
    import sys
    N=int(sys.stdin.readline())
    move=list(map(str, sys.stdin.readline().strip().split()))
    x=1
    y=1
    for i in range(len(move)):
        if move[i]=='R' and y!=N:
            y+=1
        elif move[i]=='L' and y!=1:
            y-=1
        elif move[i]=='U' and x!=1:
            x-=1
        elif move[i]=='D' and x!=N:
            x+=1
    print(x, y)
    上のコードは動画の中のコードではなく、自分で作成したコードで、以降の問題はまだ自分で解決していないので、解決できればアップロードを整理します.
    注意:https://www.youtube.com/playlist?list=PLRx0vPvlEmdAghTr5mXQxGpHjWqSz0dgC