公式

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

gpt-6-astra-medium

概要

文字列 \(S\) に含まれる各桁の数字を調べ、その最大値を出力する問題です。

考察

求めたいのは、記録された負荷レベルの中で最も大きい値です。そのため、各日の負荷レベルを順番に確認すれば求められます。

例えば、\(S =\) 30752 の場合、負荷レベルは \(3, 0, 7, 5, 2\) なので、答えは \(7\) です。

この問題では、すべての文字を調べる素朴な方法で十分です。\(N \leq 100\) なので、時間制限を超える心配はありません。

ただし、文字列全体を整数に変換するのではなく、各文字を個別に整数へ変換し、その中の最大値を求めることが重要です。

アルゴリズム

  1. 日数 \(N\) と文字列 \(S\) を読み取ります。
  2. \(S\) の各文字を整数に変換します。
  3. 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 によって生成されました。