[白俊]2292号:ハニカム


質問する

コンセプト
基本的に,この問題はカウント列を実現できるかどうかを問う問題である.
2-7-2個
8~19~3
20~37~4
38~61~5個
.
.
6の倍数がずっと増えているのが見えます.
むげんループ
反復回数が不定であるため,ある条件が成立するまで,もはや不可能な部分を繰り返し探す必要があるため,無限ループを用いた.
cf.
  • ブレークポイント(使用)
  • 繰り返し文の実行時に最も近い繰り返し文ジャンプ
    複数のリングが重なると、現在位置のリングが1つだけ解放されます.
  • 連続ドア
  • 繰り返し中に処理を停止し、繰り返し文の開始位置に移動します.
    正確な制御構造の作成
    ソース:https://bymakers.tistory.com/15[bymakers]
    に答える
    M = int(sys.stdin.readline())
    
    if M == 1:
        print(1)
    else:
        i = 2
        cur = 0
        while True:
            if M < i :
                break
            else:
                cur += 1 # 실수했던 부분으로, 그냥 다음 라인에 cur + 1 해줌 (cur값은 반복 돌 때마다 0으로 리셋되기 때문에 적용되지 않음!!)
                i = i + 6 * cur
        x = (i - 2) // 6
        j = 0
        while True:
            j += 1
            if j * (j+1) // 2 == x:
                break
        
        print(2+j-1)
    別の解釈
    n = int(input())
    room = 1
    cnt = 1
     
    while n > room:
        room = room + (6 * cnt)
        cnt += 1
    print(cnt)