A問題 Between Two Integers
1 2 3 4 5 |
a,b,c = map(int, input().split()) if a<=c<=b: print('Yes') else: print('No') |
cの値がa〜bの間に収まっているかを確認する問題です。
問題文の条件を式にすると” a <= c <= b”となるので、これをif文の条件にして、条件と一致した場合はYesと出力します。そうでない場合はNoと表示します。
B問題 Counting Roads
1 2 3 4 5 6 7 8 9 10 11 12 13 |
n,m = map(int, input().split()) list = n*[0] #全ての要素が0のリストを作成。最初の要素は都市1、2個目の要素は都市2に見立てる。 for i in range(m): a,b = map(int, input().split()) for j in range(n): if a == j+1: list[j] += 1 if b == j+1: list[j] += 1 for k in range(len(list)): print(list[k]) |
苦戦しました。
n個の都市とm個の道路があるので、他の都市とつながる道路の数をそれぞれの都市毎に出力する問題です。
入力値は1行目は都市の数nと道路の数mですが、2行目以降は都市の番号1〜nを表しています。
以下の手順で解きました。
・全ての要素が0のリストを作る
・道路の数mだけ処理を行うループを設定
→都市の番号a,bを入力
→都市の数nだけ繰り返す2個目のループを設定
→ 都市番号a,bに応じて、リスト内の要素を更新。
リスト内の各要素は各都市を表しています。l
istは0から始まるので、list[0]は都市1、list[1]は都市2・・・list[n]は都市list[n+1]となります。
a,bは都市番号で1〜nになるので、a=1(都市1)は二個目のループのj+1と一致します。
都市番号a,bとlist内の要素が一致した時に、その要素に1を加えました。
最後にリストの要素の数(都市の数)だけprintを実行しています。
コメント