週末副業記

土日は副業エンジニアのブログです。副業に関することを投稿します。

範囲を設定する(range)(AtCoder(競プロ)1日1問【4日目】【Python】)


AtCoder Beginner Contest 098 C問題

abc098.contest.atcoder.jp

競技プログラミングで使える関数を実際の問題を通して紹介いたします。

今回は「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

f:id:ml_begin:20180604072911p:plain

 

独学プログラマー Python言語の基本から仕事のやり方まで

独学プログラマー Python言語の基本から仕事のやり方まで