AtCoder ABC 126 B – YYMM or MMYY Python解説

スポンサーリンク

YYMM or MMYY

長さ 4 の数字列 S が与えられます。あなたは、この数字列が以下のフォーマットのどちらであるか気になっています。

YYMM フォーマット: 西暦年の下 2 桁と、月を 2 桁で表したもの (例えば 1 月なら 01) をこの順に並べたもの
MMYY フォーマット: 月を 2 桁で表したもの (例えば 1 月なら 01) と、西暦年の下 2 桁をこの順に並べたもの

与えられた数字列のフォーマットとして考えられるものが YYMM フォーマットのみである場合 YYMM を、 MMYY フォーマットのみである場合 MMYY を、 YYMM フォーマット と MMYY フォーマットのどちらの可能性もある場合 AMBIGUOUS を、 どちらの可能性もない場合 NA を出力してください。

AtCoder Beginner Contest 「YYMM or MMYY」

Pythonでは文字列も数値と同じように比較演算子を使えるので、あとは数字列を2つに分け、YYMMフォーマットかMMYYフォーマットか、もしくはそれ以外かを条件文で分けていきます。

s = input()

a = s[:2]
b = s[2:]

if "01" <= a <= "12":
    if b == "00" or "13" <= b <= "99":
        print("MMYY")
    else:
        print("AMBIGUOUS")
        
elif "01" <= b <= "12":
    if a == "00" or "13" <= a <= "99":
        print("YYMM")
    else:
        print("AMBIGUOUS")
else:
    print("NA")

数字列の前半2つをa、後半2つをbとし、条件文を使っていきます。MMは01から12までの範囲で、YYは00から99までの範囲を取ります。あとはaとb、考えられるパターンを出力すれば大丈夫です。