[Baekjoon] - 2292. ハチの巣



Baekjoon-問題リンク
N = int(input()) - 1
# 지나가는 벌집 방의 갯수
result = 1

for i in range(1, N+1):
    N = N - ((i * 6))
    result += 1
    if N == 0:
        result -= 1
    elif N < 0:
        break
print(result)
🔑 コード実装よりもルールを探すのが難しい.🤢🤢🤢
ルックアップルールは、1番目のセルが1個、値が1、2番目のセルが6個、値が2~7、3番目のセルが12個、値が8~19である.4番目は18個のハニカムを生成し、20〜37番目は24個のハニカムを生成し、値は38〜61である.
上記のルールを持っています!
  • フィートのN値から蜂の巣の数を減算します.したがって,一般的に最初の巣はいつも脱落するのでN−1を与えた.
  • の初期結果値が1の理由は、最初のハニカムから始まっても、常に1つのハニカムルームが通過するためである.
  • forゲート6,12,18,24...取り除く.1つのresultを減算するたびに、1つのresultを減算したN値は0になります.これは、蜂の巣リストの最後の値になることを意味し、resultの1を減算します.
  • それから減算した値が負数になったのは、次の蜂の巣リストに入っていないため、中断し、forはドアを出て結果を印刷します!

  • 💡+ グーグルで見た良いコード
    N = int(input())
    cnt = 1
    while N > 1:
        N -= (6 * cnt)
        cnt += 1
    print(cnt)
    変数が指定されていないので、コードが非常に簡潔になります!私もいつかこのハーモニーを…!!😭