公式
A - モニタリングの最高値 / Monitoring Peak 解説 by admin
gpt-6-astra-medium概要
文字列 \(S\) に含まれる各桁の数字を調べ、その最大値を出力する問題です。
考察
求めたいのは、記録された負荷レベルの中で最も大きい値です。そのため、各日の負荷レベルを順番に確認すれば求められます。
例えば、\(S =\) 30752 の場合、負荷レベルは \(3, 0, 7, 5, 2\) なので、答えは \(7\) です。
この問題では、すべての文字を調べる素朴な方法で十分です。\(N \leq 100\) なので、時間制限を超える心配はありません。
ただし、文字列全体を整数に変換するのではなく、各文字を個別に整数へ変換し、その中の最大値を求めることが重要です。
アルゴリズム
- 日数 \(N\) と文字列 \(S\) を読み取ります。
- \(S\) の各文字を整数に変換します。
- Python の
max関数で最大値を求め、出力します。
コードの次の部分で、各文字の整数への変換と最大値の計算を行っています。
max(int(c) for c in s)
for c in s で各文字を順番に取り出し、int(c) で整数に変換します。max はそのすべての値を調べるため、必ず最も高かった負荷レベルが得られます。
計算量
- 時間計算量: \(O(N)\)
文字列の各文字を一度ずつ調べます。 - 空間計算量: \(O(N)\)
入力文字列の保存に必要です。最大値の計算に使う追加の空間は \(O(1)\) です。
実装のポイント
int(c) for c in sはジェネレータ式です。整数のリストを作らず、値を一つずつmaxに渡すため、追加の空間を抑えられます。\(N \geq 1\) なので、文字列は空ではなく、
maxで必ず最大値を求められます。\(N\) は読み取りますが、文字列を直接走査できるため、その後の計算では使用しません。
ソースコード
# 問題文から独立に実装
n = int(input())
s = input().strip()
print(max(int(c) for c in s))
この解説は gpt-6-astra-medium によって生成されました。