Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationEventAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
741
Help us understand the problem. What is going on with this article?
@KoyanagiHitoshi

AtCoderで始めるPython入門

はじめに

AtCoder では AtCoder Beginner ContestABC)が開催されており、ABC-A問題ABC-B問題Python の実装方法を知っていれば解ける問題が多くあります。ABC-A問題 と ABC-B問題 が解けるようになるために、本記事で実装方法を整理しました。

本記事について

本記事について説明します。

目的

本記事の目的は下記です。

  • PythonABC-A問題ABC-B問題 を概ね解けるようになる

注意事項

本記事の注意事項は下記の通りです。ご理解の程をよろしくお願い致します。

  • 本記事は個人で作成した記事であり、AtCoder株式会社 は作成に関与していません
  • ABC-A問題 と ABC-B問題 をすべて解けるようになる記事ではありません
  • 一部のマイナーバージョンで本記事とは異なる仕様があります
  • 体系的な Python を学習する記事ではありません

構成

各章は下記の構成です。

章名 内容
第1章 入出力処理 入出力処理を学べる
第2章 演算 演算を学べる
第3章 制御構文 制御構文を学べる
第4章 組み込み型 組み込み型を学べる
第5章 組み込み関数 組み込み関数を学べる
- 付録 Python の学習を深める情報を学べる

各節項は下記の構成です。

項目 内容
サンプルコード 問題から得られた知見と検証によって得られた知見を整理したコード
入力 サンプルコードの入力例
実行結果 サンプルコードの実行結果
解答例 AtCoder で AC になったコード

バージョン / 言語

サンプルコードは Python の下記バージョンで動作することを確認しています。

Python 3.8.2

解答例は AtCoder の下記言語で AC になることを確認しています。

Python (3.8.2)

コーディングスタイル

本記事のコードは pycodestyle の下記バージョンでコードスタイルを確認しています。

pycodestyle 2.7.0

コード

本記事のコードは下記のリポジトリで公開しています。

参考

本記事は下記を参考にしました。

最後に

サービスを提供している AtCoder株式会社 と、交流している 競技プログラマ の方々に感謝を致します。

第1章 入出力処理

第1章では入出力処理について説明します。

1.1 出力

キーポイント

  • 標準出力はprint関数で出力する。
  • 数値の出力はprint(数値)で出力する。
  • 変数の出力はprint(変数名)で出力する。
  • 文字列の出力はprint("文字列")で出力する。
  • 文字列の出力/定義は文字列をダブルクォーテーション"、またはシングルクォーテーション'で囲う。
  • print関数の区切り文字はprint(出力データ, sep="区切り文字")で指定する。
  • print関数の区切り文字を指定しない場合print(出力データ)、区切り文字は 半角スペース となる。
  • print関数の末尾の文字はprint(出力データ, end="末尾の文字")で指定する。
  • print関数の末尾の文字を指定しない場合print(出力データ)、末尾の文字は 改行 となる。

整数(int)

  • 整数を出力する

整数を出力する場合、print(整数)で出力する。

サンプルコード:sample_1-1-1.py
print(10)
実行結果
10
  • 整数を変数に格納して出力する

整数を変数に格納して出力する場合、変数名 = 整数で変数を定義し、print(変数名)で出力する。

サンプルコード:sample_1-1-2.py
x = 20
print(x)
実行結果
20

浮動小数点数(float)

  • 浮動小数点数を出力する

浮動小数点数を出力する場合、print(浮動小数点数)で出力する。

サンプルコード:sample_1-1-3.py
print(2.9)
実行結果
2.9
  • 浮動小数点数を変数に格納して出力する

浮動小数点数を変数に格納して出力する場合、変数名 = 浮動小数点数で変数を定義し、print(変数名)で出力する。

サンプルコード:sample_1-1-4.py
x = 3.5
print(x)
実行結果
3.5

文字列(str)

文字列の出力/定義は文字列をダブルクォーテーション"、またはシングルクォーテーション'で囲う。

  • 文字列を出力する

文字列を出力する場合、print("文字列") または print('文字列') で出力する。

サンプルコード:sample_1-1-5.py
print("Hello World!")
実行結果
Hello World!
  • 文字列を変数に格納して出力する

文字列を変数に格納して出力する場合、変数名 = "文字列"で変数を定義し、print(変数名)で出力する。

サンプルコード:sample_1-1-6.py
x = "Hello World!"
print(x)
実行結果
Hello World!
  • 文字列の変数のインデックスを指定して文字を出力する

文字列の変数のインデックスを指定して文字を出力する場合、print(変数名[インデックス数])で出力する。

サンプルコード:sample_1-1-7.py
x = "Hello World!"
print(x[0])
実行結果
H
サンプルコード:sample_1-1-8.py
x = "Hello World!"
print(x[11])
実行結果
!

リスト(list)

  • 1次元リストを出力する

1次元リストを出力する場合、print(リスト名)で出力する。

サンプルコード:sample_1-1-9.py
x = [1, 2, 3, 4, 5]
print(x)
実行結果
[1, 2, 3, 4, 5]
  • 1次元リストの各要素を出力する

1次元リストの各要素を出力する場合、for 変数名 in リスト名:でループ処理し、print(変数)で出力する。

サンプルコード:sample_1-1-10.py
x = [1, 2, 3, 4, 5]
for i in x:
    print(i)
実行結果
1
2
3
4
5
  • 1次元リストのインデックス指定して各要素を出力する

1次元リストのインデックス指定して各要素を出力する場合、for 変数名 in range(リストの長さ):でループ処理し、print(リスト名[変数名])で出力する。

サンプルコード:sample_1-1-11.py
x = [0, 1, 2, 3, 4]
for i in range(5):
    print(x[i])
実行結果
0
1
2
3
4
  • 2次元リストを出力する

2次元リストを出力する場合、print(リスト名)で出力する。

サンプルコード:sample_1-1-12.py
x = [[1, 2, 3], [4, 5, 6]]
print(x)
実行結果
[[1, 2, 3], [4, 5, 6]]
  • 2次元リストの各行を出力する

2次元リストの各行を出力する場合、for 1次元リスト名 in 2次元リスト名:でループ処理し、print(1次元リスト名)で出力する。

サンプルコード:sample_1-1-13.py
x = [[1, 2, 3], [4, 5, 6]]
for i in x:
    print(i)
実行結果
[1, 2, 3]
[4, 5, 6]
  • 2次元リストの各要素を出力する

2次元リストの各要素を出力する場合、for 1次元リスト名 in 2次元リスト名:でループ処理し、さらにfor 変数名 in 1次元リスト名:でネストし、print(変数名)で出力する。

サンプルコード:sample_1-1-14.py
x = [[1, 2, 3], [4, 5, 6]]
for rows in x:
    for columns in rows:
        print(columns)
実行結果
1
2
3
4
5
6
  • 2次元リストの各要素をインデックス指定して出力する

2次元リストの各要素をインデックス指定して出力する場合、for 変数名A in range(2次元リストの長さ):でループ処理し、さらにfor 変数名B in range(1次元リストの長さ):でネストし、print(リスト名[変数名A][変数名B])で出力する。

サンプルコード:sample_1-1-15.py
x = [[1, 2, 3], [4, 5, 6]]
for i in range(2):
    for j in range(3):
        print(x[i][j])
実行結果
1
2
3
4
5
6

区切り文字の指定

print関数の区切り文字はprint(出力データ, sep="区切り文字")で指定する。

  • 区切り文字を指定しない

区切り文字を指定しない場合print(出力データ)、区切り文字が 半角スペースで出力される。

サンプルコード:sample_1-1-16.py
x = 1
y = 2
z = 3
print(x, y, z)
実行結果
1 2 3
  • 改行を指定する

改行\nを指定する場合、print(出力データ, sep="\n")で出力する。

サンプルコード:sample_1-1-17.py
x = 1
y = 2
z = 3
print(x, y, z, sep="\n")
実行結果
1
2
3
  • カンマを指定する

カンマ,を指定する場合、print(出力データ, sep=",")で出力する。

サンプルコード:sample_1-1-18.py
x = 1
y = 2
z = 3
print(x, y, z, sep=",")
実行結果
1,2,3
  • 区切り文字なしを指定する

区切り文字なしを指定する場合、print(出力データ, sep="")で出力する。

サンプルコード:sample_1-1-19.py
x = 1
y = 2
z = 3
print(x, y, z, sep="")
実行結果
123

末尾文字の指定

print関数の末尾の文字はprint(出力データ, end="末尾の文字")で指定する。

  • 末尾文字を指定しない

末尾文字を指定しない場合print(出力データ)、末尾文字が 改行\nで出力される。

サンプルコード:sample_1-1-20.py
print("x")
print("y")
実行結果
x
y
  • 末尾文字なしを指定する

末尾文字なしを指定する場合、print(出力データ, end="")で出力する。

サンプルコード:sample_1-1-21.py
print("x", end="")
print("y")
実行結果
xy

1.2 入力

キーポイント

  • 標準入力はinput関数で入力する(文字列(str)型で入力される)。
  • 標準入力から整数を得たい場合、整数(int)型int(input())に変換する。
  • 標準入力から浮動小数点数を得たい場合、浮動小数点数(float)型float(input())に変換する。
  • 標準入力から得た文字列を区切りたい場合、split関数を用いてinput().split("区切り文字")と使用する。
  • split関数で区切り文字を指定しない場合input().split()半角スペース で区切られる。
  • 複数列の整数の標準入力を複数の変数に格納したい場合、map関数を用いてmap(int, input().split())と使用する。
  • 複数列の整数の標準入力をリストに格納したい場合、map関数を用いてlist(map(int, input().split()))と使用する。
  • 複数行の整数の標準入力をリストに格納したい場合、リスト内包表記で[int(input()) for 変数名 in range(入力行数)]と使用する。

1行 / 1列

  • 整数を変数に格納する

整数を変数に格納する場合、変数名 = int(input())で格納する。

入力
2
サンプルコード:sample_1-2-1.py
x = int(input())
print(x)
実行結果
2
  • 文字列を1つの変数に格納する

文字列を1つの変数に格納する場合、変数名 = input()で格納する。

入力
Hello world!
サンプルコード:sample_1-2-2.py
x = input()
print(x)
実行結果
Hello world!
  • 文字列を複数の変数に格納する

文字列を複数の変数に格納する場合、変数名A, 変数名B, 変数名C = input()で格納する。

入力
123
サンプルコード:sample_1-2-3.py
x, y, z = input()  # 123を整数(int)型ではなく、文字列(str)型で変数に格納する
print(x, y, z)
実行結果
1 2 3
入力
abc
サンプルコード:sample_1-2-4.py
x, y, z = input()
print(x, y, z)
実行結果
a b c

1行 / 複数列

  • 整数を複数の変数に格納する

整数を複数の変数に格納する場合、変数名A, 変数名B = map(int, input().split())で格納する。

入力
1 2
サンプルコード:sample_1-2-5.py
x, y = map(int, input().split())
print(x)
print(y)
実行結果
1
2

ABC012 A - スワップ

解答例:answer_1-2-1.py
A, B = map(int, input().split())
print(B, A)

ABC161 A - ABC Swap

解答例:answer_1-2-2.py
X, Y, Z = map(int, input().split())
print(Z, X, Y)
  • 文字列を複数の変数に格納する

文字列を複数の変数に格納する場合、変数名A, 変数名B = input().split()で格納する。

入力
Hello world!
サンプルコード:sample_1-2-6.py
x, y = input().split()
print(x)
print(y)
実行結果
Hello
world!

ABC012 A - スワップ

解答例:answer_1-2-3.py
A, B = input().split()
print(B, A)

ABC051 A - Haiku

解答例:answer_1-2-4.py
s1, s2, s3 = input().split(",")
print(s1, s2, s3)

ABC161 A - ABC Swap

解答例:answer_1-2-5.py
X, Y, Z = input().split()
print(Z, X, Y)
  • リストに整数を格納する

リストに整数を格納する場合、リスト名 = list(map(int, input().split()))で格納する。

入力
1 2 3 4 5
サンプルコード:sample_1-2-7.py
x = list(map(int, input().split()))
print(x)
実行結果
[1, 2, 3, 4, 5]

リストに整数を格納する場合、リスト名 = [int(変数名) for 変数名 in input().split()]で格納する。

入力
1 2 3 4 5
サンプルコード:sample_1-2-8.py
x = [int(i) for i in input().split()]
print(x)
実行結果
[1, 2, 3, 4, 5]
  • リストに文字列を格納する

リストに文字列を格納する場合、リスト名 = list(input().split())で格納する。

入力
Hello world !
サンプルコード:sample_1-2-9.py
x = list(input().split())
print(x)
実行結果
['Hello', 'world', '!']

リストに文字列を格納する場合、リスト名 = [変数名 for 変数名 in input().split()]で格納する。

入力
Hello world !
サンプルコード:sample_1-2-10.py
x = [i for i in input().split()]
print(x)
実行結果
['Hello', 'world', '!']

複数行 / 1列

  • 整数を複数の変数に格納する

整数を複数の変数に格納する場合、変数名 = int(input())を複数行で格納する。

入力
1
2
サンプルコード:sample_1-2-11.py
x = int(input())
y = int(input())
print(x, y)
実行結果
1 2

整数を複数の変数に格納する場合、変数名A, 変数名B = [int(input()) for 変数 in range(変数の数)]で格納する。

入力
1
2
サンプルコード:sample_1-2-12.py
x, y = [int(input()) for i in range(2)]
print(x, y)
実行結果
1 2
  • リストに整数を格納する

リストに整数を格納する場合、リスト名 = [int(input()) for 変数 in range(変数の数)]で格納する。

入力
1
2
3
4
5
サンプルコード:sample_1-2-13.py
x = [int(input()) for i in range(5)]
print(x)
実行結果
[1, 2, 3, 4, 5]
  • リストに文字列を格納する

リストに文字列を格納する場合、リスト名 = [input() for 変数 in range(変数の数)]で格納する。

入力
a
b
c
d
e
サンプルコード:sample_1-2-14.py
x = [input() for i in range(5)]
print(x)
実行結果
['a', 'b', 'c', 'd', 'e']
  • 入力行数が指定され、リストに整数を格納する

入力行数(rows = 5)が指定され、リストに整数を格納する場合、変数名 = int(input())で行数を格納し、リスト名 = [int(input()) for 変数 in range(変数名)]でリストに格納する。

入力
5
0
1
2
3
4
サンプルコード:sample_1-2-15.py
rows = int(input())
x = [int(input()) for i in range(rows)]
print(x)
実行結果
[0, 1, 2, 3, 4]
  • 入力行数が指定され、リストに文字列を格納する

入力行数(rows = 5)が指定され、リストに文字列を格納する場合、変数名 = int(input())で行数を格納し、リスト名 = [input() for 変数 in range(変数名)]でリストに格納する。

入力
5
a
b
c
d
e
サンプルコード:sample_1-2-16.py
rows = int(input())
x = [input() for i in range(rows)]
print(x)
実行結果
['a', 'b', 'c', 'd', 'e']

複数行 / 複数列

  • 整数を2次元リストに格納する

整数を2次元リストに格納する場合、リスト名 = [list(map(int, input().split())) for 変数 in range(入力行数)]となる。

入力
1 2 3 4 5
6 7 8 9 10
11 12 13 14 15
サンプルコード:sample_1-2-17.py
x = [list(map(int, input().split())) for i in range(3)]
print(x)
実行結果
[[1, 2, 3, 4, 5], [6, 7, 8, 9, 10], [11, 12, 13, 14, 15]]
入力
3
1 2 3 4 5
6 7 8 9 10
11 12 13 14 15
サンプルコード:sample_1-2-18.py
rows = int(input())
x = [list(map(int, input().split())) for i in range(rows)]
print(x)
実行結果
[[1, 2, 3, 4, 5], [6, 7, 8, 9, 10], [11, 12, 13, 14, 15]]

整数を2次元リストに格納する場合、リスト名 = [[int(変数名) for 変数名 in input().split()] for 変数 in range(入力行数)]となる。

入力
3
1 2 3 4 5
6 7 8 9 10
11 12 13 14 15
サンプルコード:sample_1-2-19.py
rows = int(input())
x = [[int(j) for j in input().split()] for i in range(rows)]
print(x)
実行結果
[[1, 2, 3, 4, 5], [6, 7, 8, 9, 10], [11, 12, 13, 14, 15]]

整数を2次元リストに格納する場合、リスト名 = []でリストを用意し、for 変数 in range(入力行数):でループ処理し、リスト名.append(list(map(int, input().split())))となる。

入力
3
1 2 3 4 5
6 7 8 9 10
11 12 13 14 15
サンプルコード:sample_1-2-20.py
rows = int(input())
x = []
for i in range(rows):
    x.append(list(map(int, input().split())))
print(x)
実行結果
[[1, 2, 3, 4, 5], [6, 7, 8, 9, 10], [11, 12, 13, 14, 15]]
  • 整数と文字列を複数のリストに格納する

整数と文字列を複数のリストに格納する場合、リスト名 = []で複数のリストを用意し、for 変数 in range(入力行数):でループ処理する。そのループ処理の中で変数名A, 変数名B = input().split()で入力データを受け取り、リスト名.append(データ)でリストにデータを追加する。

入力
3
0 a
1 b
2 c
サンプルコード:sample_1-2-21.py
rows = int(input())
number = []
alphabet = []
for i in range(rows):
    n, a = input().split()
    number.append(int(n))
    alphabet.append(a)
print(number)
print(alphabet)
実行結果
[0, 1, 2]
['a', 'b', 'c']

第2章 演算

第2章では演算について説明します。

2.1 算術演算

キーポイント

  • 各演算は下記表の演算子を使用する。
  • 除算の結果(商)は 浮動小数点数 となる。
  • 小数点切り捨て除算の結果(商)は 整数 となる。
演算子 記述例 意味
+ a + b 加算
- a - b 減算
* a * b 乗算
** a ** b べき乗 / べき根
/ a / b 除算
// a // b 小数点切り捨て除算
% a % b 剰余

加算

加算は+演算子を使用する。

  • 数値を足す
サンプルコード:sample_2-1-1.py
print(1+2)
実行結果
3
  • 変数に格納する
サンプルコード:sample_2-1-2.py
x = 2+3
print(x)
実行結果
5
  • 変数で足す
サンプルコード:sample_2-1-3.py
x = 3
y = 4
print(x+y)
実行結果
7

減算

減算は-演算子を使用する。

  • 数値を引く
サンプルコード:sample_2-1-4.py
print(2-1)
実行結果
1
  • 変数に格納する
サンプルコード:sample_2-1-5.py
x = 4-2
print(x)
実行結果
2
  • 変数で引く
サンプルコード:sample_2-1-6.py
x = 3
y = 6
print(x-y)
実行結果
-3

ABC001 A - 積雪深差

解答例:answer_2-1-1.py
H1 = int(input())
H2 = int(input())
print(H1-H2)

ABC007 A - 植木算

解答例:answer_2-1-2.py
n = int(input())
print(n-1)

ABC180 A - box

解答例:answer_2-1-3.py
N, A, B = map(int, input().split())
print(N-A+B)

ABC196 A - Difference Max

解答例:answer_2-1-4.py
a, b = map(int, input().split())
c, d = map(int, input().split())
print(b-c)

乗算

乗算は*演算子を使用する。

  • 数値で掛ける
サンプルコード:sample_2-1-7.py
print(3*2)
実行結果
6
  • 変数に格納する
サンプルコード:sample_2-1-8.py
x = 4*3
print(x)
実行結果
12
  • 変数で掛ける
サンプルコード:sample_2-1-9.py
x = 5
y = 6
print(x*y)
実行結果
30

ABC004 A - 流行

解答例:answer_2-1-5.py
N = int(input())
print(2*N)

ABC069 A - K-City

解答例:answer_2-1-6.py
n, m = map(int, input().split())
print((n-1)*(m-1))

ABC106 A - Garden

解答例:answer_2-1-7.py
A, B = map(int, input().split())
print(A*B-(A+B-1))

ABC121 A - White Cells

解答例:answer_2-1-8.py
H, W = map(int, input().split())
h, w = map(int, input().split())
print((H-h)*(W-w))

ABC163 A - Circle Pond

解答例:answer_2-1-9.py
R = int(input())
print(R*2*3.14)

ABC169 A - Multiplication 1

解答例:answer_2-1-10.py
A, B = map(int, input().split())
print(A*B)

ABC172 A - Calc

解答例:answer_2-1-11.py
a = int(input())
print(a+a*a+a*a*a)

ABC182 A - twiblr

解答例:answer_2-1-12.py
A, B = map(int, input().split())
print(2*A+100-B)

ABC184 A - Determinant

解答例:answer_2-1-13.py
a, b = map(int, input().split())
c, d = map(int, input().split())
print(a*d-b*c)

階乗

階乗はimport mathで math モジュールをインポートし、math.factorial(整数)となる。

サンプルコード:sample_2-1-10.py
import math
print(math.factorial(5))  # 120 = 5*4*3*2*1
実行結果
120

ABC055 B - Training Camp

解答例:answer_2-1-14.py
import math
N = int(input())
print(math.factorial(N) % (10**9+7))

べき乗

べき乗は**演算子を使う。演算は底**指数となる。

  • 数値でべき乗する
サンプルコード:sample_2-1-11.py
print(2**3)
実行結果
8
サンプルコード:sample_2-1-12.py
print(10**9+7)
実行結果
1000000007
  • 変数に格納する
サンプルコード:sample_2-1-13.py
x = 3**2
print(x)
実行結果
9
  • 変数でべき乗する
サンプルコード:sample_2-1-14.py
x = 4
y = 2
print(x**y)
実行結果
16

ABC074 A - Bichrome Cells

解答例:answer_2-1-15.py
N = int(input())
A = int(input())
print(N**2-A)

ABC134 A - Dodecagon

解答例:answer_2-1-16.py
r = int(input())
print(3*r**2)

ABC140 A - Password

解答例:answer_2-1-17.py
N = int(input())
print(N**3)

ABC145 A - Circle

解答例:answer_2-1-18.py
r = int(input())
print(r**2)

ABC172 A - Calc

解答例:answer_2-1-19.py
a = int(input())
print(a+a**2+a**3)

べき根

べき根は**演算子を使い、底**指数となる。計算結果は 浮動小数点数 となる。

  • 数値でべき根を取る
サンプルコード:sample_2-1-15.py
print(9**0.5)
実行結果
3.0
サンプルコード:sample_2-1-16.py
print(9**(1/2))
実行結果
3.0
  • 変数に格納する
サンプルコード:sample_2-1-17.py
x = 16**0.5
print(x)
実行結果
4.0
  • 変数でべき根を取る
サンプルコード:sample_2-1-18.py
x = 16
y = 0.5
print(x**y)
実行結果
4.0

除算

除算は/演算子を使用する。除算の結果(商)は 浮動小数点数 となる。

  • 数値で割る
サンプルコード:sample_2-1-19.py
print(6/3)
実行結果
2.0
サンプルコード:sample_2-1-20.py
print(7/3)
実行結果
2.3333333333333335
  • 変数に格納する
サンプルコード:sample_2-1-21.py
x = 9/3
print(x)
実行結果
3.0
  • 変数で割る
サンプルコード:sample_2-1-22.py
x = 12
y = 3
print(x/y)
実行結果
4.0

ABC117 A - Entrance Examination

解答例:answer_2-1-20.py
T, X = map(int, input().split())
print(T/X)

ABC193 A - Discount

解答例:answer_2-1-21.py
A, B = map(int, input().split())
print(100*(A-B)/A)

小数点切り捨て除算

小数点切り捨て除算は//演算子を使用する。除算の結果(商)は 整数 となる。

サンプルコード:sample_2-1-23.py
print(5//3)
実行結果
1
サンプルコード:sample_2-1-24.py
print(6//3)
実行結果
2
サンプルコード:sample_2-1-25.py
print(7//3)
実行結果
2

ABC005 A - おいしいたこ焼きの作り方

解答例:answer_2-1-22.py
x, y = map(int, input().split())
print(y//x)

ABC089 A - Grouping 2

解答例:answer_2-1-23.py
N = int(input())
print(N//3)

ABC113 A - Discount Fare

解答例:answer_2-1-24.py
X, Y = map(int, input().split())
print(X+Y//2)

ABC116 A - Right Triangle

解答例:answer_2-1-25.py
AB, BC, CA = map(int, input().split())
print(AB*BC//2)

ABC186 A - Brick

解答例:answer_2-1-26.py
N, W = map(int, input().split())
print(N//W)

小数点切り上げ除算

小数点切り上げ除算はimport mathで math モジュールをインポートし、math.ceil(数値)となる。

サンプルコード:sample_2-1-26.py
import math
print(math.ceil(1.1))
実行結果
2
サンプルコード:sample_2-1-27.py
import math
print(math.ceil(7/3))
実行結果
3

ABC036 A - お茶

解答例:answer_2-1-27.py
import math
A, B = map(int, input().split())
print(math.ceil(B/A))

ABC082 A - Round Up the Mean

解答例:answer_2-1-28.py
import math
a, b = map(int, input().split())
print(math.ceil((a+b)/2))

ABC157 A - Duplex Printing

解答例:answer_2-1-29.py
import math
N = int(input())
print(math.ceil(N/2))

ABC134 B - Golden Apple

解答例:answer_2-1-30.py
import math
N, D = map(int, input().split())
print(math.ceil(N/(D*2+1)))

ABC139 B - Power Socket

解答例:answer_2-1-31.py
import math
A, B = map(int, input().split())
print(1+math.ceil((B-A)/(A-1)))

ABC164 B - Battle

解答例:answer_2-1-32.py
import math
A, B, C, D = map(int, input().split())
print("Yes" if math.ceil(A/D) >= math.ceil(C/B) else "No")

剰余

剰余は%演算子を使用する。

サンプルコード:sample_2-1-28.py
print(6 % 3)
実行結果
0
サンプルコード:sample_2-1-29.py
print(7 % 3)
実行結果
1
サンプルコード:sample_2-1-30.py
print(8 % 3)
実行結果
2

ABC011 A - 来月は何月?

解答例:answer_2-1-33.py
N = int(input())
print((N % 12)+1)

ABC057 A - Remaining Time

解答例:answer_2-1-34.py
A, B = map(int, input().split())
print((A+B) % 24)

ABC087 A - Buying Sweets

解答例:answer_2-1-35.py
X, A, B = [int(input()) for i in range(3)]
print((X-A) % B)

ABC176 A - Takoyaki

解答例:answer_2-1-36.py
N, X, T = map(int, input().split())
print(T*(N//X) if N % X == 0 else T*(N//X+1))

ABC181 A - Heavy Rotation

解答例:answer_2-1-37.py
N = int(input())
print("White" if N % 2 == 0 else "Black")

ABC192 A - Star

解答例:answer_2-1-38.py
X = int(input())
print(100-(X % 100))

ABC041 B - 直方体

解答例:answer_2-1-39.py
A, B, C = map(int, input().split())
print((A*B*C) % (10**9+7))

ABC160 B - Golden Coins

解答例:answer_2-1-40.py
X = int(input())
print((X//500*1000)+(X % 500)//5*5)

2.2 論理演算

論理演算は下記の表の通りとなる。

演算子 記述例 意味
and a and b a も b も真であれば真
or a or b a または b が真であれば真
not not a a が偽であれば真
サンプルコード:sample_2-2-1.py
print(True and True)
実行結果
True
サンプルコード:sample_2-2-2.py
print(True and False)
実行結果
False
サンプルコード:sample_2-2-3.py
print(False and False)
実行結果
False
サンプルコード:sample_2-2-4.py
print(True or True)
実行結果
True
サンプルコード:sample_2-2-5.py
print(True or False)
実行結果
True
サンプルコード:sample_2-2-6.py
print(False or False)
実行結果
False
サンプルコード:sample_2-2-7.py
print(not True)
実行結果
False
サンプルコード:sample_2-2-8.py
print(not False)
実行結果
True

2.3 比較演算

比較演算は下記の表の通りとなる。

演算子 記述例 意味
== a == b a が b と等しい
!= a != b a が b と等しくない
> a > b a が b より大きい
>= a >= b a が b 以上
< a < b a が b より小さい
<= a <= b a が b 以下
サンプルコード:sample_2-3-1.py
print(10 == 10)
実行結果
True
サンプルコード:sample_2-3-2.py
print(10 == 20)
実行結果
False
サンプルコード:sample_2-3-3.py
print(10 != 20)
実行結果
True
サンプルコード:sample_2-3-4.py
print(10 != 10)
実行結果
False
サンプルコード:sample_2-3-5.py
print(20 > 10)
実行結果
True
サンプルコード:sample_2-3-6.py
print(10 > 20)
実行結果
False
サンプルコード:sample_2-3-7.py
print(10 >= 10)
実行結果
True
サンプルコード:sample_2-3-8.py
print(10 >= 11)
実行結果
False
サンプルコード:sample_2-3-9.py
print(10 < 20)
実行結果
True
サンプルコード:sample_2-3-10.py
print(20 < 10)
実行結果
False
サンプルコード:sample_2-3-11.py
print(10 <= 10)
実行結果
True
サンプルコード:sample_2-3-12.py
print(10 <= 9)
実行結果
False

第3章 制御構文

第3章では制御構文について説明します。

3.1 条件文

キーポイント

  • 条件文は if文 を使用する。
  • 特定の文字列、数値が含まれているか評価する場合は in演算子 を使用する。
  • 条件文を三項演算で記述する場合、print(条件式がTrueの処理 if 条件式 else 条件式がFalseの処理)となる。
  • 2つの条件文を三項演算で記述する場合、print(条件式AがTrueの処理 if 条件式A else 条件式AがFalseかつ条件式BがTrueの処理 if 条件式B else 条件式AがFalseかつ条件式BがFalseの処理)となる。

if文

if文 はif 条件式:で条件文を書く。条件式がTrueの場合、条件文の中の処理がされる。条件文が2つ以上ある場合、elif 条件式:で条件文を書く。どの条件式もTrueでない場合、else:の処理がされる。

サンプルコード:sample_3-1-1.py
x = 1
if x == 1:
    print("x is 1")
else:
    print("x is not 1")
実行結果
x is 1
サンプルコード:sample_3-1-2.py
x = 2
if x == 1:
    print("x is 1")
else:
    print("x is not 1")
実行結果
x is not 1
サンプルコード:sample_3-1-3.py
x = "a"
if x == "a":
    print("x is a")
else:
    print("x is not a")
実行結果
x is a
サンプルコード:sample_3-1-4.py
x = "b"
if x == "a":
    print("x is a")
else:
    print("x is not a")
実行結果
x is not a
サンプルコード:sample_3-1-5.py
x = 1
if x == 1:
    print("x is 1")
elif x == 2:
    print("x is 2")
else:
    print("x is not 1 and 2")
実行結果
x is 1
サンプルコード:sample_3-1-6.py
x = 2
if x == 1:
    print("x is 1")
elif x == 2:
    print("x is 2")
else:
    print("x is not 1 and 2")
実行結果
x is 2
サンプルコード:sample_3-1-7.py
x = 3
if x == 1:
    print("x is 1")
elif x == 2:
    print("x is 2")
else:
    print("x is not 1 and 2")
実行結果
x is not 1 and 2
サンプルコード:sample_3-1-8.py
x = "a"
if x == "a":
    print("x is a")
elif x == "b":
    print("x is b")
else:
    print("x is not a and b")
実行結果
x is a
サンプルコード:sample_3-1-9.py
x = "b"
if x == "a":
    print("x is a")
elif x == "b":
    print("x is b")
else:
    print("x is not a and b")
実行結果
x is b
サンプルコード:sample_3-1-10.py
x = "c"
if x == "a":
    print("x is a")
elif x == "b":
    print("x is b")
else:
    print("x is not a and b")
実行結果
x is not a and b

ABC020 A - クイズ

解答例:answer_3-1-1.py
Q = int(input())
if Q == 1:
    print("ABC")
else:
    print("chokudai")

ABC028 A - テスト評価

解答例:answer_3-1-2.py
N = int(input())
if N < 60:
    print("Bad")
elif N < 90:
    print("Good")
elif N < 100:
    print("Great")
else:
    print("Perfect")

ABC104 A - Rated for Me

解答例:answer_3-1-3.py
R = int(input())
if R < 1200:
    print("ABC")
elif R < 2800:
    print("ARC")
else:
    print("AGC")

ABC075 A - One out of Three

解答例:answer_3-1-4.py
A, B, C = map(int, input().split())
if A == B:
    print(C)
elif B == C:
    print(A)
elif C == A:
    print(B)

ABC122 A - Double Helix

解答例:answer_3-1-5.py
b = input()
if b == "A":
    print("T")
elif b == "T":
    print("A")
elif b == "C":
    print("G")
elif b == "G":
    print("C")

ABC154 A - Remaining Balls

解答例:answer_3-1-6.py
S, T = input().split()
A, B = map(int, input().split())
U = input()
if S == U:
    print(A-1, B)
else:
    print(A, B-1)

ABC194 A - I Scream

解答例:answer_3-1-7.py
A, B = map(int, input().split())
if A+B >= 15 and B >= 8:
    print(1)
elif A+B >= 10 and B >= 3:
    print(2)
elif A+B >= 3:
    print(3)
else:
    print(4)

ABC190 A - Very Very Primitive Game

解答例:answer_3-1-8.py
A, B, C = map(int, input().split())
if A < B:
    print("Aoki")
elif A > B:
    print("Takahashi")
elif C == 0:
    print("Aoki")
else:
    print("Takahashi")

ABC149 B - Greedy Takahashi

解答例:answer_3-1-9.py
A, B, K = map(int, input().split())
if K <= A:
    print(A-K, B)
elif K <= A+B:
    print(0, B-(K-A))
else:
    print(0, 0)

in演算

特定の文字列、数値が含まれているか評価する場合、in演算子 を使用する。if 探すデータ in 探されるデータとなる。

サンプルコード:sample_3-1-11.py
x = "Hello world!"
if "e" in x:
    print("e include")
else:
    print("e don't include")
実行結果
e include
サンプルコード:sample_3-1-12.py
x = "Hello world!"
if "Hello" in x:
    print("Hello include")
else:
    print("Hello don't include")
実行結果
Hello include
サンプルコード:sample_3-1-13.py
x = "Hello world!"
if "Good" in x:
    print("Good include")
else:
    print("Good don't include")
実行結果
Good don't include
サンプルコード:sample_3-1-14.py
x = ["a", "b", "c"]
if "a" in x:
    print("a include")
else:
    print("a don't include")
実行結果
a include
サンプルコード:sample_3-1-15.py
x = ["a", "b", "c"]
if "ab" in x:
    print("ab include")
else:
    print("ab don't include")
実行結果
ab don't include
サンプルコード:sample_3-1-16.py
x = [0, 1, 2]
if 1 in x:
    print("1 include")
else:
    print("1 don't include")
実行結果
1 include

ABC006 A - 世界のFizzBuzz

解答例:answer_3-1-10.py
N = input()
if N in "369":
    print("YES")
else:
    print("NO")

ABC049 A - 居合を終え、青い絵を覆う / UOIAUAI

解答例:answer_3-1-11.py
c = input()
if c in "aiueo":
    print("vowel")
else:
    print("consonant")

ABC073 A - September 9

解答例:answer_3-1-12.py
N = input()
if "9" in N:
    print("Yes")
else:
    print("No")

ABC114 A - 753

解答例:answer_3-1-13.py
X = input()
if X in "753":
    print("YES")
else:
    print("NO")

ABC171 A - αlphabet

解答例:answer_3-1-14.py
a = input()
if a in "ABCDEFGHIJKLMNOPQRSTUVWXYZ":
    print("A")
else:
    print("a")

三項演算

三項演算で条件文を記述する場合、print(条件式がTrueの処理 if 条件式 else 条件式がFalseの処理)となる。

サンプルコード:sample_3-1-17.py
x = 1
print("x is 1" if x == 1 else "x is not 1")
実行結果
x is 1
サンプルコード:sample_3-1-18.py
x = 2
print("x is 1" if x == 1 else "x is not 1")
実行結果
x is not 1

2つの条件文を三項演算で記述する場合、print(条件式AがTrueの処理 if 条件式A else 条件式AがFalseかつ条件式BがTrueの処理 if 条件式B else 条件式AがFalseかつ条件式BがFalseの処理)となる。

サンプルコード:sample_3-1-19.py
x = 3
print("x is 1" if x == 1
      else "x is 2" if x == 2
      else "x is 3" if x == 3
      else "other")
実行結果
x is 3
サンプルコード:sample_3-1-20.py
x = 4
print("x is 1" if x == 1
      else "x is 2" if x == 2
      else "x is 3" if x == 3
      else "other")
実行結果
other

ABC020 A - クイズ

解答例:answer_3-1-15.py
Q = int(input())
print("ABC" if Q == 1 else "chokudai")

ABC028 A - テスト評価

解答例:answer_3-1-16.py
N = int(input())
print("Bad" if N < 60
      else "Good" if N < 90
      else "Great" if N < 100
      else "Perfect")

ABC034 A - テスト

解答例:answer_3-1-17.py
x, y = map(int, input().split())
print("Better" if x < y else "Worse")

ABC053 A - ABC/ARC

解答例:answer_3-1-18.py
x = int(input())
print("ABC" if x < 1200 else "ARC")

ABC075 A - One out of Three

解答例:answer_3-1-19.py
A, B, C = map(int, input().split())
print(A if B == C else B if A == C else C)

ABC083 A - Libra

解答例:answer_3-1-20.py
A, B, C, D = map(int, input().split())
print("Left" if A+B > C+D else "Balanced" if A+B == C+D else "Right")

ABC091 A - Two Coins

解答例:answer_3-1-21.py
A, B, C = map(int, input().split())
print("Yes" if A+B >= C else "No")

ABC094 A - Cats and Dogs

解答例:answer_3-1-22.py
A, B, X = map(int, input().split())
print("YES" if A <= X and X <= A+B else "NO")

ABC096 A - Day of Takahashi

解答例:answer_3-1-23.py
a, b = map(int, input().split())
print(a-1 if a > b else a)

ABC099 A - ABD

解答例:answer_3-1-24.py
N = int(input())
print("ABC" if N < 1000 else "ABD")

ABC104 A - Rated for Me

解答例:answer_3-1-25.py
R = int(input())
print("ABC" if R < 1200 else "ARC" if R < 2800 else "AGC")

ABC122 A - Double Helix

解答例:answer_3-1-26.py
b = input()
print("A" if b == "T" else "T" if b == "A" else "G" if b == "C" else "C")

ABC130 A - Rounding

解答例:answer_3-1-27.py
X, A = map(int, input().split())
print("0" if X < A else "10")

ABC135 A - Harmony

解答例:answer_3-1-28.py
A, B = map(int, input().split())
print((A+B)//2 if (A+B) % 2 == 0 else "IMPOSSIBLE")

ABC136 A - Transfer

解答例:answer_3-1-29.py
A, B, C = map(int, input().split())
water = C-(A-B)
print(water if water > 0 else 0)

ABC138 A - Red or Not

解答例:answer_3-1-30.py
a = int(input())
s = input()
print(s if a >= 3200 else "red")

ABC142 A - Odds of Oddness

解答例:answer_3-1-31.py
N = int(input())
print("0.5" if N % 2 == 0 else ((N//2)+1)/N)

ABC150 A - 500 Yen Coins

解答例:answer_3-1-32.py
K, X = map(int, input().split())
print("Yes" if 500*K >= X else "No")

ABC152 A - AC or WA

解答例:answer_3-1-33.py
N, M = input().split()
print("Yes" if N == M else "No")

ABC153 A - Serval vs Monster

解答例:answer_3-1-34.py
H, A = map(int, input().split())
print(H//A if H % A == 0 else H//A+1)

ABC154 A - Remaining Balls

解答例:answer_3-1-35.py
S, T = input().split()
A, B = map(int, input().split())
U = input()
print(A-1, B) if S == U else print(A, B-1)

ABC156 A - Beginner

解答例:answer_3-1-36.py
N, R = map(int, input().split())
print(R if N >= 10 else R+100*(10-N))

ABC164 A - Sheep and Wolves

解答例:answer_3-1-37.py
S, W = map(int, input().split())
print("unsafe" if W >= S else "safe")

ABC166 A - A?C

解答例:answer_3-1-38.py
S = input()
print("ABC" if S == "ARC" else "ARC")

ABC173 A - Payment

解答例:answer_3-1-39.py
N = int(input())
print(0 if N % 1000 == 0 else 1000-(N % 1000))

ABC174 A - Air Conditioner

解答例:answer_3-1-40.py
X = int(input())
print("Yes" if X >= 30 else "No")

ABC177 A - Don't be late

解答例:answer_3-1-41.py
D, T, S = map(int, input().split())
print("Yes" if D <= S*T else "No")

ABC178 A - Not

解答例:answer_3-1-42.py
x = int(input())
print(1 if x == 0 else 0)

ABC183 A - ReLU

解答例:answer_3-1-43.py
x = int(input())
print(x if x > 0 else 0)

ABC038 B - ディスプレイ

解答例:answer_3-1-44.py
H1, W1 = map(int, input().split())
H2, W2 = map(int, input().split())
print("YES" if H1 == H2 or H1 == W2 or W1 == H2 or W1 == W2 else "NO")

ABC059 B - Comparison

解答例:answer_3-1-45.py
A = int(input())
B = int(input())
print("GREATER" if A > B else "LESS" if A < B else "EQUAL")

ABC149 B - Greedy Takahashi

解答例:answer_3-1-46.py
A, B, K = map(int, input().split())
print(A-K, B) if K <= A else print(0, B-(K-A)) if K <= A+B else print(0, 0)
in演算

if文 を三項演算で記述する場合、条件式を探すデータ in 探されるデータで書き、print(条件式がTrueの処理 if 条件式 else 条件式がFalseの処理)となる。

サンプルコード:sample_3-1-21.py
x = "Hello world!"
print("e include" if "e" in x else "e don't include")
実行結果
e include
サンプルコード:sample_3-1-22.py
x = "Hello world!"
print("Hello include" if "Hello" in x else "Hello don't include")
実行結果
Hello include
サンプルコード:sample_3-1-23.py
x = "Hello world!"
print("Good don't include" if "Good" not in x else "Good include")
実行結果
Good don't include
サンプルコード:sample_3-1-24.py
x = ["a", "b", "c"]
print("a include" if "a" in x else "a don't include")
実行結果
a include
サンプルコード:sample_3-1-25.py
x = ["a", "b", "c"]
print("ab include" if "ab" in x else "ab don't include")
実行結果
ab don't include
サンプルコード:sample_3-1-26.py
x = [0, 1, 2]
print("1 include" if 1 in x else "1 don't include")
実行結果
1 include

ABC006 A - 世界のFizzBuzz

解答例:answer_3-1-47.py
N = input()
print("YES" if N in "369" else "NO")

ABC049 A - 居合を終え、青い絵を覆う / UOIAUAI

解答例:answer_3-1-48.py
c = input()
print("vowel" if c in "aiueo" else "consonant")

ABC073 A - September 9

解答例:answer_3-1-49.py
N = input()
print("Yes" if "9" in N else "No")

ABC114 A - 753

解答例:answer_3-1-50.py
X = input()
print("YES" if X in "753" else "NO")

ABC162 A - Lucky 7

解答例:answer_3-1-51.py
N = input()
print("Yes" if "7" in N else "No")
複数条件式

条件式を複数組み合わせることができる。

サンプルコード:sample_3-1-27.py
x = 1
y = 1
z = 1
print("True" if x == y == z else "False")
実行結果
True
サンプルコード:sample_3-1-28.py
a = 1
b = 1
c = 1
d = 1
print("True" if a == b == c == d else "False")
実行結果
True
サンプルコード:sample_3-1-29.py
a = 1
b = 2
c = 3
d = 4
print("True" if a < b < c < d else "False")
実行結果
True

ABC061 A - Between Two Integers

解答例:answer_3-1-52.py
A, B, C = map(int, input().split())
print("Yes" if A <= C <= B else "No")

ABC079 A - Good Integer

解答例:answer_3-1-53.py
a, b, c, d = input()
print("Yes" if a == b == c or b == c == d else "No")

ABC094 A - Cats and Dogs

解答例:answer_3-1-54.py
A, B, X = map(int, input().split())
print("YES" if A <= X <= A+B else "NO")
解答例:answer_3-1-55.py
A, B, X = map(int, input().split())
print("YES" if 0 <= X-A <= B else "NO")

ABC131 A - Security

解答例:answer_3-1-56.py
S = input()
print("Good" if S[0] != S[1] != S[2] != S[3] else "Bad")
解答例:answer_3-1-57.py
a, b, c, d = input()
print("Good" if a != b != c != d else "Bad")
解答例:answer_3-1-58.py
S = input()
print("Good" if S[0] != S[1] and S[1] != S[2] and S[2] != S[3] else "Bad")

ABC144 A - 9x9

解答例:answer_3-1-59.py
A, B = map(int, input().split())
print(A*B if 1 <= A <= 9 and 1 <= B <= 9 else "-1")

ABC191 A - Vanishing Pitch

解答例:answer_3-1-60.py
V, T, S, D = map(int, input().split())
print("No" if V*T <= D <= V*S else "Yes")

3.2 繰り返し文

キーポイント

  • 繰り返し文は for文 と whlle文 がある。
  • range関数 を使った for文 はfor 変数名 in range(初期値, 終了値):となる。初期値を指定しない場合、変数は 0 から始まる。
  • in演算子 を使った for文 はfor 変数名 in リスト名:となる。
  • while文 はwhile 条件式:となる。条件式がTrueの場合、繰り返しを続ける。

for文

range関数

range関数 を使った for文 はfor 変数名 in range(初期値, 終了値):となる。初期値を指定しない場合、変数は 0 から始まる。

サンプルコード:sample_3-2-1.py
for i in range(5):
    print(i)
実行結果
0
1
2
3
4
サンプルコード:sample_3-2-2.py
for i in range(2, 5):
    print(i)
実行結果
2
3
4

ABC137 B - One Clue

解答例:answer_3-2-1.py
K, X = map(int, input().split())
for x in range(X-K+1, X+K):
    print(x, end=" ")

ABC162 B - FizzBuzz Sum

解答例:answer_3-2-2.py
N = int(input())
total = 0
for i in range(1, N+1):
    if (i % 3) != 0 and (i % 5) != 0:
        total = total+i
print(total)

ABC181 B - Trapezoid Sum

解答例:answer_3-2-3.py
N = int(input())
total = 0
for i in range(N):
    A, B = map(int, input().split())
    total = total+(A+B)*(B-A+1)//2
print(total)

ABC184 B - Quizzes

解答例:answer_3-2-4.py
N, X = map(int, input().split())
S = input()
for i in range(N):
    if S[i] == "o":
        X = X+1
    elif S[i] == "x" and X != 0:
        X = X-1
print(X)

in演算

in演算子 を使った for文 はfor 変数名 in リスト名:となる。

サンプルコード:sample_3-2-3.py
x = ["a", "b", "c"]
for i in x:
    print(i)
実行結果
a
b
c

ABC142 B - Roller Coaster

解答例:answer_3-2-5.py
N, K = map(int, input().split())
H = list(map(int, input().split()))
count = 0
for h in H:
    if h >= K:
        count = count+1
print(count)

while文

while文 はwhile 条件式:となる。条件式がTrueの場合、while の中の処理を続ける。

サンプルコード:sample_3-2-4.py
i = 0
while i < 5:
    print(i)
    i = i+1
実行結果
0
1
2
3
4

ABC139 B - Power Socket

解答例:answer_3-2-6.py
A, B = map(int, input().split())
count, outlet = 0, 1
while outlet < B:
    outlet = outlet-1
    outlet = outlet+A
    count = count+1
print(count)

ABC156 B - Digits

解答例:answer_3-2-7.py
N, K = map(int, input().split())
digits = 0
while(N > 0):
    N = N//K
    digits = digits+1
print(digits)

ABC165 B - 1%

解答例:answer_3-2-8.py
X = int(input())
year = 0
deposit = 100
while deposit < X:
    deposit = deposit*101//100
    year = year+1
print(year)

第4章 組み込み型

第4章では組み込み型について説明します。

4.1 整数(int)

キーポイント

  • 浮動小数点数を引数した場合、整数を返す。
サンプルコード:sample_4-1-1.py
print(int(2.9))
実行結果
2
サンプルコード:sample_4-1-2.py
x = 3.1
print(int(x))
実行結果
3

ABC039 B - エージェント高橋君

解答例:answer_4-1-1.py
X = int(input())
print(int(X**(1/4)))

ABC077 B - Around Square

解答例:answer_4-1-2.py
N = int(input())
print(int(N**(1/2))**2)

4.2 文字列(str)

キーポイント

  • 文字列の定義は文字列をダブルクォーテーション"、またはシングルクォーテーション'で囲う。
  • 文字列の連結は+演算子が使える。
  • 文字列の繰り返しは*演算子が使える。
  • 文字列の参照は文字列[参照番号]となる。
  • 文字列の比較は、整数と同様に行える。
  • 文字列の逆順は文字列[::-1]となる。
  • 文字列の出現回数はcountメソッドを使用する。
  • 文字列の出現回数は文字列.count(データ)で出現回数が返される。
  • 文字列の置換はreplaceメソッドが使える。
  • スライスは文字列[最初のインデックス:最後のインデックス:ステップ数]となる。

文字列の定義

文字列の定義は文字列をダブルクォーテーション"、またはシングルクォーテーション'で囲う。

サンプルコード:sample_4-2-1.py
print("Hello World!")
実行結果
Hello World!
サンプルコード:sample_4-2-2.py
x = "Hello World!"
print(x)
実行結果
Hello World!

文字列の連結

文字列の連結は+演算子が使える。

サンプルコード:sample_4-2-3.py
print("foo"+"bar")
実行結果
foobar
サンプルコード:sample_4-2-4.py
x = "Fizz"
y = "Buzz"
print(x+y)
実行結果
FizzBuzz

ABC010 A - ハンドルネーム

解答例:answer_4-2-1.py
S = input()
print(S+"pp")

ABC029 A - 複数形

解答例:answer_4-2-2.py
W = input()
print(W+"s")

ABC068 A - ABCxxx

解答例:answer_4-2-3.py
N = input()
print("ABC"+N)

ABC149 A - Strings

解答例:answer_4-2-4.py
S, T = input().split()
print(T+S)

ABC179 A - Plural Form

解答例:answer_4-2-5.py
S = input()
print(S+"s" if S[-1] != "s" else S+"es")

文字列の繰り返し

文字列の繰り返しは*演算子が使える。

サンプルコード:sample_4-2-5.py
print("HelloWorld!"*2)
実行結果
HelloWorld!HelloWorld!
サンプルコード:sample_4-2-6.py
print("1"*5)
実行結果
11111

ABC115 A - Christmas Eve Eve Eve

解答例:answer_4-2-6.py
D = int(input())
print("Christmas"+" Eve"*(25-D))

ABC152 B - Comparing Strings

解答例:answer_4-2-7.py
a, b = input().split()
print(a*int(b) if a < b else b*int(a))

ABC154 B - I miss you...

解答例:answer_4-2-8.py
S = input()
print("x"*len(S))

文字列の参照

文字列の参照は文字列[参照番号]となる。

サンプルコード:sample_4-2-7.py
x = "abc"
print(x[0], x[1], x[2])
実行結果
a b c
サンプルコード:sample_4-2-8.py
x = "abc"
print(x[-1], x[-2], x[-3])
実行結果
c b a

ABC041 A - 添字

解答例:answer_4-2-9.py
s = input()
i = int(input())
print(s[i-1])

ABC048 A - AtCoder *** Contest

解答例:answer_4-2-10.py
s = input()
print("A"+s[8]+"C")

ABC090 A - Diagonal String

解答例:answer_4-2-11.py
c1 = input()[0]
c2 = input()[1]
c3 = input()[2]
print(c1+c2+c3)

ABC139 A - Tenki

解答例:answer_4-2-12.py
S = input()
T = input()
count = 0
if S[0] == T[0]:
    count = count+1
if S[1] == T[1]:
    count = count+1
if S[2] == T[2]:
    count = count+1
print(count)

ABC160 A - Coffee

解答例:answer_4-2-13.py
S = input()
print("Yes" if S[2] == S[3] and S[4] == S[5] else "No")

ABC189 A - Slot

解答例:answer_4-2-14.py
C = input()
print("Won" if C[0] == C[1] == C[2] else "Lost")

文字列の比較

文字列の比較は、整数と同様に行える。

サンプルコード:sample_4-2-9.py
x = "Hello"
y = "Hello"
print("True" if x == y else "False")
実行結果
True
サンプルコード:sample_4-2-10.py
x = "Hello"
y = "Good"
print("True" if x == y else "False")
実行結果
False
サンプルコード:sample_4-2-11.py
x = "a"
y = "b"
print("x < y" if x < y else "x > y")
実行結果
x < y
サンプルコード:sample_4-2-12.py
x = "b"
y = "a"
print("x < y" if x < y else "x > y")
実行結果
x > y

ABC038 A - お茶

解答例:answer_4-2-15.py
S = input()
print("YES" if S[-1] == "T" else "NO")

ABC056 A - HonestOrDishonest

解答例:answer_4-2-16.py
a, b = input().split()
print("H" if a == b else "D")

ABC060 A - Shiritori

解答例:answer_4-2-17.py
A, B, C = input().split()
print("YES" if A[-1] == B[0] and B[-1] == C[0] else "NO")

ABC070 A - Palindromic Number

解答例:answer_4-2-18.py
N = input()
print("Yes" if N[0] == N[2] else "No")

ABC078 A - HEX

解答例:answer_4-2-19.py
X, Y = input().split()
print("<" if X < Y else "=" if X == Y else ">")

ABC079 A - Good Integer

解答例:answer_4-2-20.py
N = input()
print("Yes" if N[0] == N[1] == N[2] or N[1] == N[2] == N[3] else "No")

ABC119 A - Still TBD

解答例:answer_4-2-21.py
S = input()
print("Heisei" if S <= "2019/04/30" else "TBD")

文字列の逆順

文字列の逆順は文字列[::-1]となる。

サンプルコード:sample_4-2-13.py
x = "Hello World"
print(x[::-1])
実行結果
dlroW olleH

ABC070 A - Palindromic Number

解答例:answer_4-2-22.py
N = input()
print("Yes" if N == N[::-1] else "No")

ABC077 A - Rotation

解答例:answer_4-2-23.py
c1 = input()
c2 = input()
print("YES" if c1 == c2[::-1] else "NO")

文字列の出現回数

文字列の出現回数はcountメソッドを使用する。文字列.count(データ)で出現回数が返される。

サンプルコード:sample_4-2-14.py
x = "abbccc"
print(x.count("c"))
実行結果
3
サンプルコード:sample_4-2-15.py
x = "abbccc"
print(x.count("d"))
実行結果
0
サンプルコード:sample_4-2-16.py
x = "123435"
print(x.count("3"))
実行結果
2

ABC081 A - Placing Marbles

解答例:answer_4-2-24.py
s = input()
print(s.count("1"))

ABC095 A - Something on It

解答例:answer_4-2-25.py
S = input()
print(700+100*S.count("o"))

ABC101 A - Eating Symbols Easy

解答例:answer_4-2-26.py
S = input()
print(S.count("+")-S.count("-"))

ABC162 A - Lucky 7

解答例:answer_4-2-27.py
N = input()
print("Yes" if N.count("7") > 0 else "No")

ABC175 A - Rainy Season

解答例:answer_4-2-28.py
S = input()
print(S.count("R") if S.count("R") != 2 else 2 if S[1] == "R" else 1)

ABC028 B - 文字数カウント

解答例:answer_4-2-29.py
S = input()
print(S.count("A"), S.count("B"), S.count("C"),
      S.count("D"), S.count("E"), S.count("F"))

ABC084 B - Postal Code

解答例:answer_4-2-30.py
A, B = map(int, input().split())
S = input()
print("Yes" if S[A] == "-" and S.count("-") == 1 else "No")

ABC150 B - Count ABC

解答例:answer_4-2-31.py
N = int(input())
S = input()
print(S.count("ABC"))

文字列の置換

文字列の置換はreplaceメソッドが使える。文字列.replace("置換前文字列","置換後文字列")で置換する。

サンプルコード:sample_4-2-17.py
x = "abcde"
print(x.replace("bc", "xy"))
実行結果
axyde

ABC111 A - AtCoder Beginner Contest 999

解答例:answer_4-2-32.py
n = input()
print(n.replace("1", "x").replace("9", "1").replace("x", "9"))

ARC045 A - スペース高橋君

解答例:answer_4-2-33.py
S = input()
print(S.replace("Left", "<").replace("Right", ">").replace("AtCoder", "A"))

スライス

スライスは文字列[最初のインデックス:最後のインデックス:ステップ数]となる。

サンプルコード:sample_4-2-18.py
x = "abcde"
print(x[1:3])
実行結果
bc
サンプルコード:sample_4-2-19.py
x = "abcde"
print(x[1:4:2])
実行結果
bd
サンプルコード:sample_4-2-20.py
x = "abcde"
print(x[:3])
実行結果
abc
サンプルコード:sample_4-2-21.py
x = "abcde"
print(x[3:])
実行結果
de
サンプルコード:sample_4-2-22.py
x = "abcde"
print(x[1::2])
実行結果
bd
サンプルコード:sample_4-2-23.py
x = "abcde"
print(x[:-1])
実行結果
abcd
サンプルコード:sample_4-2-24.py
x = "abcde"
print(x[:-1:2])
実行結果
ac

ABC085 A - Already 2018

解答例:answer_4-2-34.py
S = input()
print("2018"+S[4:])

ABC167 A - Registration

解答例:answer_4-2-35.py
S = input()
T = input()
print("Yes" if S == T[:-1] else "No")

ABC197 A - Rotate

解答例:answer_4-2-36.py
S = input()
print(S[1:]+S[0])

ABC072 B - OddString

解答例:answer_4-2-37.py
s = input()
print(s[::2])

ABC141 B - Tap Dance

解答例:answer_4-2-38.py
S = input()
print("No" if "L" in S[::2] or "R" in S[1::2] else "Yes")

ABC145 B - Echo

解答例:answer_4-2-39.py
N = int(input())
S = input()
print("Yes" if S[:N//2] == S[N//2:] else "No")

ABC159 B - String Palindrome

解答例:answer_4-2-40.py
S = input()
N = len(S)
S1 = S[0:(N-1)//2]
S2 = S[(N+3)//2-1:N+1]
print("Yes" if S == S[::-1] and S1 == S1[::-1] and S2 == S2[::-1] else "No")

ABC168 B - ... (Triple Dots)

解答例:answer_4-2-41.py
K = int(input())
S = input()
print(S[:K]+"..." if len(S) > K else S)

4.3 リスト(list)

キーポイント

  • 要素の参照はリスト名[インデックス番号]で参照できる。
  • 要素の追加はappendメソッドが使える。
  • 要素の追加はリスト名.append(データ)でリストの最後に追加される。
  • 要素の探索はindexメソッドが使える。
  • 要素の探索はリスト名.index(データ)でリストの先頭から探索され、一番初めに見つかったインデックスを返却する。
  • 要素の取り出しはpopメソッドが使える。
  • 要素の取り出しはリスト名.pop(要素番号)で要素番号の要素が取り出される。
  • 要素の取り出しで要素番号を指定しないリスト名.pop()とリストの最後の要素が取り出される。
  • 要素の取り除きはremoveメソッドが使える。
  • 要素の取り除きはリスト名.remove(取り除きたいデータ)で要素が取り除かれる。
  • 要素の取り除きで取り除きたいデータがリスト内に複数ある場合、リストの先頭から探し、最初に探し出したデータが取り除かれる。
  • 要素の削除はdel文が使える。
  • 要素の削除はdel[インデックス]となる。
  • 要素の出現回数はcountメソッドを使用する。
  • 要素の出現回数はリスト名.count(データ)で出現回数が返される。
  • 要素の結合はjoinメソッドを使用する。
  • 要素の結合は"結合する文字列".join(リスト名)で結合される。
  • 要素のユニーク化はリストlist型から集合set型に変換することによって要素をユニークにできる。
  • スライスはリスト名[最初のインデックス:最後のインデックス:ステップ数]となる。

要素の参照

  • 要素の参照はリスト名[インデックス番号]で参照できる。
サンプルコード:sample_4-3-1.py
x = ["a", "b", "c"]
print(x[0], x[1], x[2])
実行結果
a b c
サンプルコード:sample_4-3-2.py
x = ["a", "b", "c"]
print(x[-1], x[-2], x[-3])
実行結果
c b a

ABC168 A - ∴ (Therefore)

解答例:answer_4-3-1.py
N = input()
book = ["pon", "pon", "hon", "bon", "hon", "hon", "pon", "hon", "pon", "hon"]
print(book[int(N[-1])])

要素の追加

要素の追加はappendメソッドを使用する。リスト名.append(データ)でリストの最後に追加される。

サンプルコード:sample_4-3-3.py
x = ["a", "b", "c"]
x.append("d")
print(x)
実行結果
['a', 'b', 'c', 'd']
サンプルコード:sample_4-3-4.py
x = [0, 1, 2]
x.append(3)
print(x)
実行結果
[0, 1, 2, 3]

要素の探索

要素の探索はindexメソッドを使用する。リスト名.index(データ)でリストの先頭から探索され、一番初めに見つかったインデックスを返却する。

サンプルコード:sample_4-3-5.py
x = ["a", "b", "c", "d", "e", "f"]
print(x.index("c"))
実行結果
2
サンプルコード:sample_4-3-6.py
x = ["a", "b", "c", "d", "c", "c"]
print(x.index("c"))
実行結果
2
サンプルコード:sample_4-3-7.py
x = [1, 2, 3, 4, 5]
print(x.index(3))
実行結果
2

ABC013 A - A

解答例:answer_4-3-2.py
X = input()
print(["A", "B", "C", "D", "E"].index(X)+1)

ABC141 A - Weather Prediction

解答例:answer_4-3-3.py
weather = ["Sunny", "Cloudy", "Rainy"]
S = input()
print(weather[(weather.index(S)+1) % 3])

ABC146 A - Can't Wait for Holiday

解答例:answer_4-3-4.py
S = input()
week = ["SUN", "MON", "TUE", "WED", "THU", "FRI", "SAT"]
print(7-week.index(S))

ABC170 A - Five Variables

解答例:answer_4-3-5.py
x = list(map(int, input().split()))
print(x.index(0)+1)
解答例:answer_4-3-6.py
x = input().split()
print(x.index("0")+1)

要素の取り出し

要素の取り出しはpopメソッドを使用する。リスト名.pop(要素番号)で要素番号の要素が取り出される。要素番号を指定しないリスト名.pop()と、リストの最後の要素が取り出される。

サンプルコード:sample_4-3-8.py
x = ["a", "b", "c", "d", "e", "f"]
print(x.pop(1))
print(x)
実行結果
b
['a', 'c', 'd', 'e', 'f']
サンプルコード:sample_4-3-9.py
x = [1, 2, 3, 4, 5]
print(x.pop(3))
print(x)
実行結果
4
[1, 2, 3, 5]
サンプルコード:sample_4-3-10.py
x = [1, 2, 3, 4, 5]
print(x.pop())
print(x)
実行結果
5
[1, 2, 3, 4]

要素の取り除き

要素の取り除きはremoveメソッドが使える。要素の取り除きはリスト名.remove(取り除きたいデータ)で要素が取り除かれる。要素の取り除きで取り除きたいデータがリスト内に複数ある場合、リストの先頭から探し、最初に探し出したデータが取り除かれる。

サンプルコード:sample_4-3-11.py
x = ["a", "b", "c", "d", "e", "f"]
x.remove("d")
print(x)
実行結果
['a', 'b', 'c', 'e', 'f']
サンプルコード:sample_4-3-12.py
x = ["a", "a", "b", "b", "c", "c"]
x.remove("b")
print(x)
実行結果
['a', 'a', 'b', 'c', 'c']

要素の削除

要素の削除はdel文が使える。要素の削除はdel リスト名[削除したいインデックス]となる。

サンプルコード:sample_4-3-13.py
x = ["a", "b", "c", "d", "e", "f"]
del x[1]
print(x)
実行結果
['a', 'c', 'd', 'e', 'f']
サンプルコード:sample_4-3-14.py
x = ["a", "b", "c", "d", "e", "f"]
del x[2:4]
print(x)
実行結果
['a', 'b', 'e', 'f']
サンプルコード:sample_4-3-15.py
x = ["a", "b", "c", "d", "e", "f"]
del x[:]
print(x)
実行結果
[]

要素の出現回数

要素の出現回数はcountメソッドを使用する。リスト名.count(データ)で出現回数が返される。

サンプルコード:sample_4-3-16.py
x = ["a", "b", "b", "c", "c", "c"]
print(x.count("c"))
実行結果
3
サンプルコード:sample_4-3-17.py
x = ["a", "b", "b", "c", "c", "c"]
print(x.count("d"))
実行結果
0
サンプルコード:sample_4-3-18.py
x = [1, 2, 3, 4, 3, 5]
print(x.count(3))
実行結果
2

ABC042 A - 和風いろはちゃんイージー / Iroha and Haiku (ABC Edition)

解答例:answer_4-3-7.py
ABC = list(map(int, input().split()))
print("YES" if ABC.count(5) == 2 and ABC.count(7) == 1 else "NO")
解答例:answer_4-3-8.py
ABC = input().split()
print("YES" if ABC.count("5") == 2 and ABC.count("7") == 1 else "NO")

要素の結合

要素の結合はjoinメソッドを使用する。"結合する文字列".join(リスト名)で結合される。

サンプルコード:sample_4-3-19.py
x = ["a", "b", "c", "d", "e"]
print(" ".join(x))
実行結果
a b c d e
サンプルコード:sample_4-3-20.py
x = ["a", "b", "c", "d", "e"]
print(",".join(x))
実行結果
a,b,c,d,e
サンプルコード:sample_4-3-21.py
x = ["a", "b", "c", "d", "e"]
print("".join(x))
実行結果
abcde

要素のユニーク化

要素のユニーク化はリストlist型から集合set型に変換することによって要素をユニークにできる。ただし、要素の順序性は保たれない。また集合set型からリストlist型にすることもできる。

サンプルコード:sample_4-3-22.py
x = [1, 2, 3, 2, 1, 3]
print(list(set(x)))
実行結果
[1, 2, 3]
サンプルコード:sample_4-3-23.py
x = ["b", "a", "c", "a", "b"]
print(list(set(x)))
実行結果
['b', 'c', 'a']

スライス

スライスはリスト名[最初のインデックス:最後のインデックス:ステップ数]となる。

サンプルコード:sample_4-3-24.py
x = ["a", "b", "c", "d", "e"]
print(x[1:3])
実行結果
['b', 'c']
サンプルコード:sample_4-3-25.py
x = ["a", "b", "c", "d", "e"]
print(x[1:4:2])
実行結果
['b', 'd']
サンプルコード:sample_4-3-26.py
x = ["a", "b", "c", "d", "e"]
print(x[:3])
実行結果
['a', 'b', 'c']
サンプルコード:sample_4-3-27.py
x = ["a", "b", "c", "d", "e"]
print(x[3:])
実行結果
['d', 'e']
サンプルコード:sample_4-3-28.py
x = ["a", "b", "c", "d", "e"]
print(x[1::2])
実行結果
['b', 'd']
サンプルコード:sample_4-3-29.py
x = ["a", "b", "c", "d", "e"]
print(x[:-1])
実行結果
['a', 'b', 'c', 'd']
サンプルコード:sample_4-3-30.py
x = ["a", "b", "c", "d", "e"]
print(x[:-1:2])
実行結果
['a', 'c']

第5章 組み込み関数

第5章では組み込み関数について説明します。

5.1 長さ(len)

キーポイント

  • 文字列とリストの長さを得る場合、len関数を使用する。

文字列の長さを得る場合、len(文字列)となる。

サンプルコード:sample_5-1-1.py
x = "Hello"
print(len(x))
実行結果
5

ABC033 A - 暗証番号

解答例:answer_5-1-1.py
N = input()
print("DIFFERENT" if len(set(N)) != 1 else "SAME")

ABC093 A - abc of ABC

解答例:answer_5-1-2.py
S = input()
print("Yes" if len(set(S)) == 3 else "No")

ABC158 A - Station and Bus

解答例:answer_5-1-3.py
S = input()
print("Yes" if len(set(S)) != 1 else "No")

ABC189 A - Slot

解答例:answer_5-1-4.py
C = input()
print("Won" if len(set(C)) == 1 else "Lost")

ABC063 B - Varied

解答例:answer_5-1-5.py
S = input()
print("yes" if len(S) == len(set(S)) else "no")

ABC069 B - i18n

解答例:answer_5-1-6.py
s = input()
print(s[0]+str(len(s)-2)+s[-1])

リストの長さを得る場合、len(リスト)となる。

サンプルコード:sample_5-1-2.py
x = ["a", "b", "c", "a"]
print(len(x))
実行結果
4
サンプルコード:sample_5-1-3.py
x = [0, 1, 2]
print(len(x))
実行結果
3

ABC046 A - AtCoDeerくんとペンキ / AtCoDeer and Paint Cans

解答例:answer_5-1-7.py
abc = list(input().split())
print(len(set(abc)))

ABC132 A - Fifty-Fifty

解答例:answer_5-1-8.py
S = input()
c = list(set(S))
print("Yes" if len(c) == 2 and S.count(c[0]) == S.count(c[1]) == 2 else "No")

ABC155 A - Poor

解答例:answer_5-1-9.py
ABC = input().split()
print("Yes" if len(set(ABC)) == 2 else "No")

5.2 ソート(sorted)

キーポイント

  • ソートをする場合、sorted関数を使用する。
  • ソートは昇順で行われる。
  • ソートを降順にする場合、sorted(データ)[::-1]となる。

昇順

ソートをする場合、sorted関数を使用する。ソートは昇順で行われる。

サンプルコード:sample_5-2-1.py
x = [2, 1, 3]
print(sorted(x))
実行結果
[1, 2, 3]

ABC047 A - キャンディーと2人の子供 / Fighting over Candies

解答例:answer_5-2-1.py
a, b, c = sorted(map(int, input().split()))
print("Yes" if a+b == c else "No")

ABC066 A - ringring

解答例:answer_5-2-2.py
a, b, c = sorted(map(int, input().split()))
print(a+b)

ABC103 A - Task Scheduling Problem

解答例:answer_5-2-3.py
A1, A2, A3 = sorted(map(int, input().split()))
print(A3-A1)
解答例:answer_5-2-4.py
A = sorted(map(int, input().split()))
print(A[-1]-A[0])

ABC110 A - Maximize the Formula

解答例:answer_5-2-5.py
A, B, C = sorted(map(int, input().split()))
print(10*C+B+A)

ABC064 B - Traveling AtCoDeer Problem

解答例:answer_5-2-6.py
N = int(input())
a = sorted(map(int, input().split()))
print(a[-1]-a[0])

ABC102 B - Maximum Difference

解答例:answer_5-2-7.py
N = int(input())
A = sorted(map(int, input().split()))
print(A[-1]-A[0])

降順

ソートを降順にする場合、sorted(データ)[::-1]となる。

サンプルコード:sample_5-2-2.py
x = [2, 1, 3]
print(sorted(x)[::-1])
実行結果
[3, 2, 1]

ABC018 A - 豆まき

解答例:answer_5-2-8.py
ABC = [int(input()) for i in range(3)]
sort_ABC = sorted(ABC)[::-1]
for abc in ABC:
    print(sort_ABC.index(abc)+1)

ABC082 B - Two Anagrams

解答例:answer_5-2-9.py
s = sorted(input())
t = sorted(input())[::-1]
print("Yes" if s < t else "No")

5.3 最大値(max)

キーポイント

  • 最大値を得る場合、max関数を使用する。

整数の場合、max(整数A, 整数B)となる。

サンプルコード:sample_5-3-1.py
print(max(2, 3))
実行結果
3

変数の場合、max(変数名A, 変数名B, 変数名C)となる。

サンプルコード:sample_5-3-2.py
x = 1
y = 2
z = 3
print(max(x, y, z))
実行結果
3

リストの場合、max(リスト名)となる。

サンプルコード:sample_5-3-3.py
x = [2, 4, 6, 8]
print(max(x))
実行結果
8

ABC037 A - 饅頭

解答例:answer_5-3-1.py
A, B, C = map(int, input().split())
print(max(C//A, C//B))

ABC052 A - Two Rectangles

解答例:answer_5-3-2.py
A, B, C, D = map(int, input().split())
print(max(A*B, C*D))

ABC098 A - Add Sub Mul

解答例:answer_5-3-3.py
A, B = map(int, input().split())
print(max(A+B, A-B, A*B))

ABC124 A - Buttons

解答例:answer_5-3-4.py
A, B = map(int, input().split())
print(max(2*A-1, 2*B-1, A+B))

ABC137 A - +-x

解答例:answer_5-3-5.py
A, B = map(int, input().split())
print(max(A+B, A-B, A*B))

ABC143 A - Curtain

解答例:answer_5-3-6.py
A, B = map(int, input().split())
print(max(0, A-2*B))

ABC149 B - Greedy Takahashi

解答例:answer_5-3-7.py
A, B, K = map(int, input().split())
print(max(0, A-K), max(0, B-max(0, K-A)))

ABC178 B - Product Max

解答例:answer_5-3-8.py
a, b, c, d = map(int, input().split())
print(max(b*d, a*c, a*d, b*c))

5.4 最小値(min)

キーポイント

  • 最小値を得る場合、min関数を使用する。

整数の場合、min(整数A, 整数B)となる。

サンプルコード:sample_5-4-1.py
print(min(2, 3))
実行結果
2

変数の場合、min(変数名A, 変数名B, 変数名C)となる。

サンプルコード:sample_5-4-2.py
x = 1
y = 2
z = 3
print(min(x, y, z))
実行結果
1

リストの場合、min(リスト名)となる。

サンプルコード:sample_5-4-3.py
x = [2, 4, 6, 8]
print(min(x))
実行結果
2

ABC037 A - 饅頭

解答例:answer_5-4-1.py
A, B, C = map(int, input().split())
print(C//min(A, B))

ABC040 A - 赤赤赤赤青

解答例:answer_5-4-2.py
n, x = map(int, input().split())
print(min(x-1, n-x))

ABC066 A - ringring

解答例:answer_5-4-3.py
a, b, c = map(int, input().split())
print(min(a+b, b+c, c+a))

ABC080 A - Parking

解答例:answer_5-4-4.py
N, A, B = map(int, input().split())
print(min(N*A, B))

ABC092 A - Traveling Budget

解答例:answer_5-4-5.py
A, B, C, D = [int(input()) for i in range(4)]
print(min(A, B)+min(C, D))

ABC103 A - Task Scheduling Problem

解答例:answer_5-4-6.py
A = list(map(int, input().split()))
print(max(A)-min(A))

ABC120 A - Favorite Sound

解答例:answer_5-4-7.py
A, B, C = map(int, input().split())
print(min(C, B//A))

ABC129 A - Airplane

解答例:answer_5-4-8.py
P, Q, R = map(int, input().split())
print(min(P+Q, Q+R, R+P))

ABC133 A - T or T

解答例:answer_5-4-9.py
N, A, B = map(int, input().split())
print(min(N*A, B))

ABC185 A - ABC Preparation

解答例:answer_5-4-10.py
A = list(map(int, input().split()))
print(min(A))

ABC064 B - Traveling AtCoDeer Problem

解答例:answer_5-4-11.py
N = input()
a = list(map(int, input().split()))
print(max(a)-min(a))

ABC152 B - Comparing Strings

解答例:answer_5-4-12.py
a, b = input().split()
print(min(a*int(b), b*int(a)))

ABC158 B - Count Balls

解答例:answer_5-4-13.py
N, A, B = map(int, input().split())
div = N//(A+B)
mod = N % (A+B)
print(div*A+min(mod, A))

ABC167 B - Easy Linear Programming

解答例:answer_5-4-14.py
A, B, C, K = map(int, input().split())
print(min(K, A)-max(0, K-A-B))

5.5 合計値(sum)

キーポイント

  • 合計値を得る場合、sum関数を使用する。

リストの要素の合計値を得る場合、sum(リスト名)となる。

サンプルコード:sample_5-5-1.py
x = [1, 2, 3]
print(sum(x))
実行結果
6

ABC066 A - ringring

解答例:answer_5-5-1.py
abc = list(map(int, input().split()))
print(sum(sorted(abc)[:2]))

ABC147 A - Blackjack

解答例:answer_5-5-2.py
A = list(map(int, input().split()))
print("bust" if sum(A) >= 22 else "win")

ABC115 B - Christmas Eve Eve

解答例:answer_5-5-3.py
N = int(input())
p = [int(input()) for i in range(N)]
print(sum(p)-max(p)//2)

ABC117 B - Polygon

解答例:answer_5-5-4.py
N = int(input())
L = list(map(int, input().split()))
print("Yes" if sum(L) > 2*max(L) else "No")

ABC153 B - Common Raccoon vs Monster

解答例:answer_5-5-5.py
H, N = map(int, input().split())
A = sum(map(int, input().split()))
print("Yes" if H <= A else "No")

ABC163 B - Homework

解答例:answer_5-5-6.py
N, M = map(int, input().split())
A = list(map(int, input().split()))
print(N-sum(A) if N-sum(A) >= 0 else -1)

ABC171 B - Mix Juice

解答例:answer_5-5-7.py
N, K = map(int, input().split())
p = list(map(int, input().split()))
print(sum(sorted(p)[:K]))

数字和

map関数を使用して、sum(map(int, 整数の文字列データ))で数字和を求めることができる。

サンプルコード:sample_5-5-2.py
x = 1234
print(sum(map(int, str(x))))
実行結果
10
サンプルコード:sample_5-5-3.py
x = "1234"
print(sum(map(int, x)))
実行結果
10

ABC023 A - 加算王

解答例:answer_5-5-8.py
X = input()
print(sum(map(int, X)))

ABC187 A - Large Digits

解答例:answer_5-5-9.py
A, B = input().split()
a = sum(map(int, A))
b = sum(map(int, B))
print(a if a > b else b)

ABC080 B - Harshad Number

解答例:answer_5-5-10.py
N = input()
print("No" if int(N) % sum(map(int, N)) else "Yes")

ABC176 B - Multiple of 9

解答例:answer_5-5-11.py
N = input()
print("Yes" if sum(map(int, N)) % 9 == 0 else "No")

5.6 絶対値(abs)

キーポイント

  • 絶対値を得る場合、abs関数を使用する。

変数の絶対値を得る場合、abs(変数名)となる。

サンプルコード:sample_5-6-1.py
x = -1
print(abs(x))
実行結果
1

ABC071 A - Meal Delivery

解答例:answer_5-6-1.py
x, a, b = map(int, input().split())
print("A" if abs(a-x) < abs(b-x) else "B")

ABC097 A - Colorful Transceivers

解答例:answer_5-6-2.py
a, b, c, d = map(int, input().split())
print("Yes" if abs(c-a) <= d or abs(b-a) <= d and abs(c-b) <= d else "No")

ABC188 A - Three-Point Shot

解答例:answer_5-6-3.py
X, Y = map(int, input().split())
print("Yes" if abs(X-Y) < 3 else "No")

付録

付録では Python の学習を深める情報について説明します。

代入文

代入文は下記の通りに記述することができる。

サンプルコード:appendix_1-1.py
x, y = 1, 2
print(x, y)
実行結果
1 2
サンプルコード:appendix_1-2.py
x, y = 1, 2
x, y = y, x
print(x, y)
実行結果
2 1

累算代入文

累算代入文は下記の表の通りとなる。

演算子 記述例 等式
+= a += b a = a + b
-= a -= b a = a - b
*= a *= b a = a * b
**= a **= b a = a ** b
/= a /= b a = a / b
//= a //= b a = a // b
%= a %= b a = a % b

演算子の優先順位

演算子の優先順位は Python ドキュメントに記載されています。

オブジェクトの型を確認する

オブジェクトの型を確認する場合、type関数を使用する。

サンプルコード:appendix_2-1.py
x = 10
print(x)
print(type(x))
実行結果
10
<class 'int'>
サンプルコード:appendix_2-2.py
x = 20.5
print(x)
print(type(x))
実行結果
20.5
<class 'float'>
サンプルコード:appendix_2-3.py
x = "Hello world!"
print(x)
print(type(x))
実行結果
Hello world!
<class 'str'>
サンプルコード:appendix_2-4.py
x = [1, 2, 3, 4, 5]
print(x)
print(type(x))
実行結果
[1, 2, 3, 4, 5]
<class 'list'>
サンプルコード:appendix_2-5.py
x = (1, 2, 3, 4, 5)
print(x)
print(type(x))
実行結果
(1, 2, 3, 4, 5)
<class 'tuple'>
サンプルコード:appendix_2-6.py
x = {"one": 1, "two": 2, "three": 3}
print(x)
print(type(x))
実行結果
{'one': 1, 'two': 2, 'three': 3}
<class 'dict'>
サンプルコード:appendix_2-7.py
x = set()
print(x)
print(type(x))
実行結果
set()
<class 'set'>
741
Help us understand the problem. What is going on with this article?
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
741
Help us understand the problem. What is going on with this article?