クルトンのプログラミング教室

Pythonの使い方やPythonを使った競技プログラミングの解法などを解説しています。

Pythonで解くAtCoder(M-SOLUTIONS プロコンオープン 2020:C)

こんにちは、クルトンです!
この記事では

AtCoderの「M-SOLUTIONS プロコンオープン 2020」のC問題をPythonを使って解説します。

問題のリンクを載せておきます。

atcoder.jp


解法

今回は解説がとても分かりやすかったので、解説のコードをPythonに直すだけにしておきます。

本解のサンプルコード

Pythonで書いた解答を載せておきます。


atcoder.jp


おまけ

最後のif、else文が少し不格好なので1行にしてみましょう。

if 条件式:
    処理1
else:
    処理2


処理が簡単な場合、上のコードは

処理1 if 条件式 else 処理2


このように一行で書くことができます。

なので今回の解答であれば

N, K = map(int,input().split())
A = list(map(int,input().split()))

for i in range(K, N):
    if A[i - K] < A[i]:
        print('Yes')
    else:
        print('No')


を上記の書き方を使うことで

N, K = map(int,input().split())
A = list(map(int,input().split()))

for i in range(K, N):
    print('Yes') if A[i - K] < A[i] else print('No')


というように簡潔にすることができます。

ただ、この部分で混乱してしまうと本末転倒なので、サンプルコードでは一般的なif、else文の書き方を使いました。


別解のサンプルコード

Pythonで書いた解答を載せておきます。

atcoder.jp


まとめ

今回は

  • 数式を使って条件を整理する

という問題でした。

ではまたお会いしましょう!さようなら~