AtCoder Beginner Contest 090 B問題
競技プログラミングで使える関数を実際の問題を通して紹介いたします。
今回は「[::-1]」です。
与えられた数字列二つの範囲で回文数となる数字の個数を求めよ。という問題。
回文数:逆順にしても同じ数字。
配列を逆順に出力する
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言語の基本から仕事のやり方まで
- 作者: コーリー・アルソフ,清水川貴之監訳,清水川貴之,新木雅也
- 出版社/メーカー: 日経BP社
- 発売日: 2018/02/24
- メディア: 単行本
- この商品を含むブログ (2件) を見る