pontz_rwのブログ

プログラミング等の備忘録

ITP1_6_B: Finding Missing Cards

なくなったカードの発見 | プログラミング入門 | Aizu Online Judge
不足しているカードを指定された順序で表示する問題

トランプのリストを用意しておき、指定されたカードをフラグで管理するか、取り除くかします。


解答1

# トランプの生成
cards = [
    "{} {}".format(s, r) for s in ('S', 'H', 'C', 'D') for r in range(1, 13 + 1)
]

count = int(input())

# トランプの削除
for n in range(count):
    card = input()
    cards.remove(card)

# 不足しているトランプの表示
for n in cards:
    print(n)

解答2

from collections import OrderedDict

# トランプの生成
cards = OrderedDict()  # 順序付き辞書
for s in ['S', 'H', 'C', 'D']:
    for r in range(1, 13 + 1):
        key = "{} {}".format(s, r)
        cards[key] = False

count = int(input())

# 所持しているトランプの処理
for n in range(count):
    input_key = input()
    cards[input_key] = not(cards[input_key])  # 真理値を反転 (Trueへ)

# 不足しているトランプの表示
for k, v in cards.items():
    if not v:
        print(k)