週末副業記

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

配列を逆順に出力する[ : : -1](AtCoder(競プロ)1日1問【24日目】【Python】)


AtCoder Beginner Contest 090 B問題

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

今回は「[::-1]」です。

 

与えられた数字列二つの範囲で回文数となる数字の個数を求めよ。という問題。
回文数:逆順にしても同じ数字。
f:id:ml_begin:20180624143208p:plain

配列を逆順に出力する

range_min,range_max = map(int,input().split())
palindromic = 0
for i in range(range_min,range_max+1):
    palindromic += 1 if str(i) == str(i)[::-1] else 0
print(palindromic)

[::-1]入力することによって、配列を逆順に出力することが可能です。

コロンを2個続けて次に数字を入力することで、出力のステップ数を決めることができます。特に”−◯”の場合は逆順から一つずつステップを刻んでいくという意味になります。

コードの改善

a, b = map(int, input().split())
num = 0
for i in range(10):
    for j in range(10):
        for k in range(10):
            c = 10000 * i + 1000 * j + k * 100 + 10 * j + i
            if a <= c <= b:
                num += 1

print(num)

回文数となり得る数字には法則があるので、その法則を元に考えれば効率の良いプログラムを作成することができます。

参考:
文字列を逆順にする - ひきメモ
Pythonの集合演算

 

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

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