公式

A - モニタリングの最高値 / Monitoring Peak 解説 by admin

gpt-6-astra-medium

概要

文字列 \(S\) に含まれる数字のうち、最も大きいものを求めます。Python の max 関数を使えば、その数字を直接取り出せます。

考察

各日の負荷レベルを順番に確認し、それまでに見つけた最大値を更新していけば答えが求まります。この素朴な方法でも時間計算量は \(O(N)\) であり、十分に間に合います。

ここで、\(S\) に含まれる文字は 0 から 9 の数字だけです。これらの文字の大小関係は、

'0' < '1' < ... < '9'

となり、数字としての大小関係と一致します。そのため、各文字を整数に変換する必要はありません。

Python の max(S) は、文字列 \(S\) の各文字を調べて最も大きい文字を返します。したがって、これをそのまま出力すれば正解です。

例えば、\(S =\) 30582 の場合、最も大きい文字は '8' なので、答えは 8 です。

アルゴリズム

  1. 日数 \(N\) と文字列 \(S\) を読み込む。
  2. max(S) で、\(S\) に含まれる最も大きい文字を求める。
  3. 求めた文字を出力する。

max(S) はすべての日の負荷レベルを比較するため、返される数字は \(N\) 日間の最大の負荷レベルになります。

計算量

  • 時間計算量: \(O(N)\)
    max(S) で、長さ \(N\) の文字列を一度調べます。
  • 空間計算量: \(O(N)\)
    入力文字列 \(S\) の保存に必要です。最大値を求めるための追加の空間は \(O(1)\) です。

実装のポイント

  • \(N \geq 1\) なので、\(S\) は空文字列ではなく、必ず max(S) で最大値を求められます。

  • max(S) の返り値は文字ですが、そのまま print すれば要求された形式で出力できます。

  • \(N\) は入力として読み込みますが、max が文字列全体を調べるため、その後の処理では使う必要がありません。

    ソースコード

N = int(input())
S = input()
print(max(S))


この解説は gpt-6-astra-medium によって生成されました。