AtCoder Beginner Contest 098 C問題
競技プログラミングで使える関数を実際の問題を通して紹介いたします。
今回は「range()」です。
問題としては、
「東西方向に東と西どちらかに向いて並んでいるグループがある。
その中でリーダーを決めた場合、リーダー以外はリーダーの方向に向かなければならない。
他の人たちは、できるだけ向いている方向は変えたくない。
向いている方向を変える人数が最も少ないときの数を求めよ」
というものです。
n = int(input()) s = input() l = [] count = s[1:].count('E') r = count for i in range(n-1): if s[i] == 'W': count += 1 if s[i + 1] == 'E': count -= 1 if count < r: r = count print(r)
count = s[1:].count('E')]
文字配列の1番目以降の「東」の数をカウント。countで記憶。
for i in range(n-1)
range()の使い方は、range(最後の値)で、範囲:0〜最後の値-1 です。
n - 1 の範囲なのは、最後の配列の確認の時、
i + 1 をすると存在しない配列番号を参照することになるからです。
if s[i] == 'W': count += 1 if s[i + 1] == 'E': count -= 1 if count < r: r = count
独学プログラマー Python言語の基本から仕事のやり方まで
- 作者: コーリー・アルソフ,清水川貴之監訳,清水川貴之,新木雅也
- 出版社/メーカー: 日経BP社
- 発売日: 2018/02/24
- メディア: 単行本
- この商品を含むブログ (2件) を見る