演習課題「n 変数の最大最小」
整数nと、要素数nの数列Aと、整数kが与えられるので、数列Aに含まれる数のうち、k番目に大きいものを出力してください。
右側のコードエリアには、入力を受け取り数列の各要素をチェックするループ処理をおこなうコードが用意されています。コードを書き加え、問題を解くコードを完成させてください。
期待する出力値
2
演習課題「n 変数の最大最小」
整数nと、要素数nの数列Aと、整数kが与えられるので、数列Aに含まれる数のうち、k番目に大きいものを出力してください。
右側のコードエリアにはコードが用意されています。コメントを参考にコードを書き加え、問題を解くコードを完成させてください。
期待する出力値
2
#07:トップkの探索
このチャプターでは、レベルアップ問題集「線形探索メニュー」の問題「k番目に大きな値」を、線形探索アルゴリズムを用いて解いていきます。
# 入力を受け取る
n = int(input())
a = [int(x) for x in input().split()]
k = int(input())
# 答えを保存する変数maximumを用意して適切な初期値で初期化
maximum = 1000000001
# k回まわるループを書いて
for i in range(k):
# 数列に含まれるmaximum未満の値の最大値を保存する変数next_maximumを用意して適切な初期値で初期化
next_maximum = -1000000001
# 配列(リスト)の全要素をiterateするループを書いて
for value in a:
# 要素がmaximum未満かどうか判定して、next_maximumを更新する
if value < maximum and next_maximum < value:
next_maximum = value
# maximumを更新する
maximum = next_maximum
# 答えを出力する
print(maximum)
5
-9 10 6 0 -3
4
5
-9 10 6 0 -3
3
数列をソートすると、線形探索を行わずとも数列のk番目に大きい値を求めることができます。# 入力を受け取る
n = int(input())
a = [int(x) for x in input().split()]
k = int(input())
# 答えを出力する
print(sorted(a, reverse=True)[k-1])