問題
標準入力の 1 行目に整数の個数 n、2 行目にその数だけの整数が届きます。2 行目の数と数の間には、半角の空白がちょうど 1 つずつ入ります。その中で一番大きい数を 1 行で出してください。
- n は 1 以上 100 以下です
- 並ぶ整数は、どれも -1000 以上 1000 以下です
- 最大値を求める組み込みの道具 (Python の
max()、JavaScript のMath.max()) を使わずに書いてみてください
入力と出力の例
例 1
入力
5
3 9 2 7 4出力
9例 2
全部が負の数でも、一番大きいのは 0 に一番近い数です。
入力
3
-5 -2 -8出力
-2ヒント
ヒント 1
「いままで見た中で一番大きい数」を 1 つの変数に持ち、数を 1 つずつ見て、それより大きければ置き換えます。
ヒント 2
その変数の最初の値を 0 にすると、例 2 で 0 が出てしまいます。最初の値には、並びの先頭の数を入れます。
ここから解答です。先に自分で書いてみてから読むと、身につきやすくなります。
解答例
Python
Python
n = int(input())
parts = input().split()
nums = list(map(int, parts))
largest = nums[0]
for x in nums:
if x > largest:
largest = x
print(largest)JavaScript
Node.js で動かす形です。
JavaScript
const lines = require("fs")
.readFileSync(0, "utf8")
.trim()
.split("\n");
const nums = lines[1]
.split(" ")
.map(Number);
let largest = nums[0];
for (const x of nums) {
if (x > largest) {
largest = x;
}
}
console.log(largest);解説
この問題の要は、ヒント 2 の最初の値です。0 から始めると、全部が負の数のときに、並びに無い 0 が答えになってしまいます。先頭の数から始めれば、どんな並びでも正しく動きます。
2 行目は、空白で分けてから 1 つずつ整数に変えます。Python では split() と map(int, parts)、JavaScript では split(" ") と map(Number) が、その役目です。
1 行目の n は、この書き方では使いません。言語によっては個数を先に知る必要があるので、入力に付いています。
数を 1 回ずつ見るので、手間は個数に比例します。組み込みの max() も中では同じことをしています。仕組みが分かったら、実務では max(nums) と書いて構いません。
