AtCoder Beginner Contest

【pythonでABC154を解説】A - Remaining Balls

問題概要

問題ページ

問題文

文字列 \(S\) の書かれたボールが \(A\) 個、文字列 \(T\) の書かれたボールが \(B\) 個あります。
高橋君は、文字列 \(U\) の書かれたボールを \(1\) 個選んで捨てました。
文字列 \(S,T\) の書かれたボールがそれぞれ何個残っているか求めてください。

制約

  • \(S,T,U\) は英小文字のみからなる文字列
  • \(S,T\) の長さは \(1\) 以上 \(10\) 以下
  • \(S \not= T\)
  • \(S=U\) または \(T=U\)
  • \(1 \leq A,B \leq 10\)
  • \(A,B\) は整数

問題の考察

A問題にしてはコーディングが少し面倒な問題の印象。

  • \(S=U\) または \(T=U\)

という制約があるので、最初に与えられたボールの個数からいずれかのボールが一つだけ少なくなることが分かる。

捨てられたボール\(U\)が\(S\)ならば\(A\)を1つ減らし、\(T\)なら\(B\)を1つ減らせばいい。

\(U=S\)なら\((A-1,B)\)、\(U=T\)なら\((A,B-1)\)を出力すれば良い。

たびすけ
「\(S=U\) または \(T=U\)」の制約がポイント

ACコード

import sys


def solve():
    input = sys.stdin.readline
    mod = 10 ** 9 + 7
    s, t = list(map(str, str(input().rstrip('\n')).split()))
    a, b = list(map(int, input().rstrip('\n').split()))
    if s == str(input().rstrip('\n')):
        print(a - 1, b)
    else:
        print(a, b - 1)


if __name__ == '__main__':
    solve()

プログラミング

-AtCoder Beginner Contest
-