AtCoder Beginner Contest 174 A問題「Air Conditioner」の解説を行います。
問題URL : https://atcoder.jp/contests/abc174/tasks/abc174_a
#問題概要:
現在の室温$X$[単位:度]が与えられる。
室温が$30$度以上ならば冷房の電源を入れる。
冷房を入れるかどうかを判定せよ。
##制約:
・$-40 \leq X \leq 40$
・$X$は整数
#解説:
プログラミングの中で利用頻度がかなり多い、「条件分岐」の問題です。
今回は$30 \leq X $であるかの条件分岐を行う問題でした。
さて、問題に取り組む前に、
制約が小さいため、以下のようなコードを考えた方はいますか??
X = int(input())
if (X == -40):
print("No")
elif (X == -39):
print("No")
elif (X == -38):
print("No")
#この後X == 40まで条件分岐を行う
制約上、$-40 \leq \ X \leq 40$というものがあるのでおよそ160行書くことでACすることも出来るのですが、競技プログラミングでは「コードを正確に書くまでの速さ」も求められるのでこの書き方ではあまりよくありません。
X = int(input())
if (30<=X):
print("Yes")
else:
#(X < 30)
print("No")
このように書くと
・$30 \leq X$であるときに"Yes"と出力
・$X < 30 ( X \leq 29)$であるときに"No"と出力
という、2条件のみの条件分岐によって、A.pyのようなコードと同じ処理を行うプログラムを書くことが出来ます。
以下、C++14, Javaでの解答例です。(上のコードはPythonでの解答例です)
C++での解答例
#include<bits/stdc++.h>
using namespace std;
int main(){
int x;
cin >> x;
if (30 <= x){
cout << "Yes" << endl;
}else{
cout << "No" << endl;
}
}
(改行を忘れないこと!!)
Javaでの解答例
import java.util.Scanner;
public class main(){
public static void (String[] args){
Scanner scan = new Scanner(System.in);
int x = scan.nextInt();
if (30 <= x){
System.out.println("Yes");
}else{
System.out.println("No");
}
}
}