3
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

AtCoder の AtCoder Beginners Selection を Python で実装する

Last updated at Posted at 2019-08-10

#はじめに
AtCoderとは、オンラインで参加できる競技プログラミングのサイトです。(リンク
競技プログラミングはGoogleやFacebookが主催する国際大会もありますが、国内だとAtCoderが一番有名ではないでしょうか。
AtCoder Beginners Selectionは、AtCoderに登録してまず取り組むべき、初心者用の問題集です。
この記事では、AtCoder Beginners SelectionをPythonで実装したスクリプトを紹介します。

#目次

  1. Welcome to AtCoder
  2. Product
  3. Placing Marbles
  4. Shift only
  5. Coins
  6. Some Sums
  7. Card Game for Two
  8. Kagami Mochi
  9. Otoshidama
  10. 白昼夢 / Daydream
  11. Traveling

Welcome to AtCoder

1問目です。基本的なことですが、以下ポイントです。

  • 入出力には、組み込み関数のinput()とprint()を用いる。
  • 改行には、エスケープシーケンス\nを用いる。
  • map関数は、map(関数, リスト)の形式で、リストの全要素の関数を適用させる。
WelcomeToAtCoder.py
a = int(input())
b, c = map(int , input().split(" "))
s = input()
sum = a + b + c
print("{} {}".format(sum, s))

Product

2問目です。以下ポイントです。

  • 偶奇判定は「2で割った余りが0か1か」。
Product.py
a, b = map(int, input().split(" "))
if a*b % 2 ==1:
    print("Odd")
else:
    print("Even")

Placing Marbles

3問目です。以下ポイントです。

  • 文字列もforループで回せます。
PracingMarbles.py
s = input()
count = 0
for i in s:
    if int(i)==1:
        count+=1
print(count)

Shift only

4問目です。

ShiftOnly.py
N = int(input())
A = map(int, input().split(" "))
count = 0
flag = False
while True:
    for i in range(N):
        if A[i] % 2 == 0:
            A[i] //= 2
        else :
            print(count)
            flag = True
            break
    count += 1
    if flag:
        break

Coins

5問目です。

Coins.py
A = int(input())
B = int(input())
C = int(input())
X = int(input())
count = 0
a = min(A, X//500)
for i in range(a+1):
    b = min(B, (X - 500*i)//100) 
    for j in range(b+1):
        if (X - 500*i - 100*j)/50 <= C: 
            count+=1
print(count)

Some Sums

6問目です。

SomeSums.py
in = input()
l_str_in = in.split(" ")
N = int(l_str_in[0])
A = int(l_str_in[1])
B = int(l_str_in])
count = 0
for n in range(N+1):
    a = (n)//10**4
    b = (n - a*10**4)//10**3
    c = (n - a*10**4 - b*10**3)//10**2
    d = (n - a*10**4 - b*10**3 - c*10**2)//10**1
    e = (n - a*10**4 - b*10**3 - c*10**2 - d*10**1)//10**0
    SUM = a + b + c + d + e
    if (SUM>=A and SUM<=B):
        count += n
print(count)

Card Game for Two

7問目です。

CardGameForTwo.py
N = int(input())
lstr_a = input().split(" ")
lint_a = [int(n) for n in lstr_a]
lint_a_sort = sorted(lint_a, reverse = True)
scoreAlice = 0
scoreBob = 0
for i in range(len(lint_a_sort)):
    if i % 2 == 0:
        scoreAlice += lint_a_sort[i]
    if i % 2 == 1:
        scoreBob += lint_a_sort[i]
print(scoreAlice - scoreBob)

Kagami Mochi

8問目です。

Kagamimochi.py
Num = int(input())
ld = []
for i in range(Num):
    ld.append(int(input()))
ld_set = list(set(ld))
print(len(ld_set))

Otoshidama

9問目です。

Otoshidama.py
input_list = input().split(' ')
N = int(input_list[0])
Y = int(input_list[1])
A = None
flag = False
for x in range(N+1):
    for y in range(N+1-x):
        if 10000*x + 5000*y + 1000*(N-x-y) == Y:
            A = str(x) + " " + str(y) + " " + str(N-x-y)
            print(A)
            flag = True
    if flag:
        break
if A is None:
    A = '-1 -1 -1'
    print(A)

白昼夢 / Daydream

10問目です。

Daydream.py
S = input().replace('eraser', '').replace('erase', '').replace('dreamer', '').replace('dream', '')
if (len(S)==0):
    print('YES')
else:
    print('NO')

Traveling

11問目です。

Traveling.py
N = int(input())
t_list = [0]
x_list = [0]
y_list = [0]
A = 'Yes'
for i in range(N):
    ti, xi, yi = map(int, input().split())
    t_list.append(ti)
    x_list.append(xi)
    y_list.append(yi)
    if ((abs(x_list[i+1] - x_list[i]) + abs(y_list[i+1] - y_list[i]) > (t_list[i+1] - t_list[i]))):
        A = 'No'
        break
    if (x_list[i+1] + y_list[i+1] - t_list[i+1])%2 != 0:
        A = 'No'
        break
print(A)
3
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
6

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?