ebisukeプログラミング初心者脱出黙示録

30歳を過ぎてから始めたプログラミングと競プロの記録。Pythonで取り組んでいます。Arduinoで電子工作も

エイシングプログラミングコンテスト2021 A - Three Dice / B - 180°【Python解答例】

f:id:ebisuke33:20210522222945p:plain

エイシンプログラミングコンテスト2021(AtCoder Beginner Contest202)のA とB問題についてPythonの解答例を記事にしていきます。
AISing Programming Contest 2021(AtCoder Beginner Contest 202) - AtCoder



AtCoder Beginner Contest202 A - Three Dice

A - Three Dice

問題文

高橋君が 3 つのサイコロを振ったところ、出た目はそれぞれ a,b,c でした。
これらのサイコロについて、出た目とは反対の面が表す整数を足し合わせた値を求めてください。
ただし、高橋君が振るサイコロは全て一般的な立方体の 6 面ダイスであり、ある面とその反対側の面が表す整数を足すと 7 になります。

制約

・1≤a,b,c≤6
・入力は全て整数である。

解答例

a, b, c = map(int,input().split())

ans = 21 - a - b - c

print(ans)

解説

問題文の通り3つのサイコロを振って出た目の裏の数字を合計した値を答える問題です。

出た目の裏の数字は7 - x で表すことができるので、( 7 - a ) + ( 7 - b ) + ( 7 - c ) = 21 - a - b - cが求める値になります。

この値をans変数に代入し、出力すればOKです。



AtCoder Beginner Contest202 B - 180°

B - 180°

問題文

0、1、6、8、9 からなる文字列 S が与えられます。
S を 180 度回転したものを出力してください。すなわち、S に次の操作を施してできる文字列を出力してください。
・S を反転する。
・0 を 0 に、1 を 1 に、6 を 9 に、8 を 8 に、9 を 6 に変換する。

制約

・1≤|S|≤10^5
・S は 0、1、6、8、9 からなる。

解答例

s = input()
s = s[::-1]
ans = []

for i in range(len(s)):
    if s[i] == "6":
        ans.append("9")
    elif s[i] == "9":
        ans.append("6")
    else:
        ans.append(s[i])

ans = "".join(ans)
print(ans)

解説

与えられたSを問題文の条件のように180°反転させた文字列を答える問題です。

文字列Sの文字の順番をまず反転させました。

そのあとで文字が6なら9に、9なら6に変換し、それ以外ならそのままans配列に足していきました。

ループを抜けたあとにansを出力すればACでした。