【ABC146 A】「Can’t Wait for Holiday」を解く【Python3】

abc146a

コンテスト一覧へ

 

今日の曜日が文字列Sで与えられ、次の日曜日が何日後なのかを求める問題です。

曜日ごとにif文を作ってゴリ押しでもできますが、もっと短く簡単に解くことができます。

提出
week_l = "SUN,MON,TUE,WED,THU,FRI,SAT".split(",")
s = input()
n = week_l.index(s)
print(7 - n)

問題文から曜日をコピペで持ってきて、曜日のリストを作成します。

week_l = "SUN,MON,TUE,WED,THU,FRI,SAT".split(",")
# week_l = ['SUN', 'MON', 'TUE', 'WED', 'THU', 'FRI', 'SAT']

入力された文字列が、リストの何番目にあるかを取得します。

リストのインデックスは0から始まるため、入力が「SUN」だった場合、「n = 0」となります。

7からnを引けば、次の日曜日が何日後なのかを求めることができます。

split()メソッド

split()メソッドは、区切り文字を指定して、文字列を分割します。

区切り文字を指定しない場合、空白、タブ、改行で分割されます。

str.split(区切り文字)
index()メソッド

index()メソッドは、調べたい値を指定すると、リストのインデックス(0始まり)が取得できます。

l.index(値)

 

以下のようにまとめることもできます。

提出
week_l = "SUN,MON,TUE,WED,THU,FRI,SAT".split(",")
print(7 - week_l.index(input()))

 

ちなみに、コンテスト本番は↓こんな感じにやっていました。。。

お勧めしませんw がこれでも問題なくACできます。

提出
s = input()

if s == 'SUN':
    ans = 7
elif s == 'MON':
    ans = 6
elif s == 'TUE':
    ans = 5
elif s == 'WED':
    ans = 4
elif s == 'THU':
    ans = 3
elif s == 'FRI':
    ans = 2
else:
    ans = 1

print(ans)

【ABC146】解説記事

コンテスト一覧に戻る

コメントを残す

メールアドレスが公開されることはありません。