B - Roller Coaster Editorial by TumoiYorozu
この解説は、C++ に入門したばかりの中高生レベルを想定して、考察の方法、コードの書き方の解説をします。
この問題を解く考察としては、\(N\)個の \(h_1, h_2, ..., h_N\) それぞれに対し、K以上かどうかを判定し、K以上であったものの個数を答えれば良い。
ヒント1:N個のhを受け取る
for (int i = 0; i < N; i++)
で N 回のループが書ける。
ループの中で h を入力する処理を書けば、N個の$h_1, h_2, ..., h_N$を受け取ることが出来る。
次は、それぞれのhがK以上かを判定して、答えを記録すると良い。
次は、それぞれのhがK以上かを判定して、答えを記録すると良い。
カウントが出来れば、あとはそれを出力するだけだ!
hがK以上 と h が Kよりも大きい の違いにも気をつけよう。
コード例
(実際の提出のリンクはこちら) ヒント2:N個のhを受け取る(具体的に編)
#include <bits/stdc++.h>
using namespace std;
int main() {
int N, K;
cin >> N >> K;
~~処理~~
for (int i = 0; i < N; i++) {
int h;
cin >> h;
~~処理~~
}
~~処理~~
}
ヒント3:個数を答える
#include <bits/stdc++.h>
using namespace std;
int main() {
int N, K;
cin >> N >> K;
int answer = 0;
for (int i = 0; i < N; i++) {
int h;
cin >> h;
~~処理~~
}
~~処理~~
}
ヒント4:K以上かどうかを判定
#include <bits/stdc++.h>
using namespace std;
int main() {
int N, K;
cin >> N >> K;
int answer = 0;
for (int i = 0; i < N; i++) {
int h;
cin >> h;
if (~~条件~~) {
~~処理~~
}
}
~~処理~~
}
ヒント5:K以上のもののカウント
answer + 1
と書いても、answer+1 を計算するだけで answer の中身は変わらない。正しくは
answer = answer + 1
と代入をしないといけない。他にも
answer += 1
や
answer++
と省略して書く書き方もある。
解答コード
#include <bits/stdc++.h>
using namespace std;
int main() {
int N, K;
cin >> N >> K;
int answer = 0;
for (int i = 0; i < N; i++) {
int h;
cin >> h;
if (h >= K) {
answer++;
}
}
cout << answer << endl;
}
posted:
last update: