8VC Venture Cup 2016 - Elimination Round B. Cards

,

B. Cards

入力中のR G Bの出現回数だけ考えればよい。 Rが作れるかを考える。入力は以下のように場合分けできる。

  • 空の場合
    • 与えられない
  • Rのみの場合
    • 作れる
  • GBも含まれる場合
    • 作れる。G Bをそれぞれ残り1枚に圧縮してからR
  • GBのいずれか一方のみ含まれる場合
    • それが1枚のみの場合 作れない。非Rなカードをどうやっても消せない
    • それが2枚以上の場合 作れる。GBも含まれる場合に遷移できる
#!/usr/bin/env python3
n = int(input())
s = input()
t = 'BGR'
cnt = [s.count(c) for c in t]
ans = ''
for i in range(3):
    a, b, c = cnt[i], cnt[(i+1)%3], cnt[(i+2)%3]
    if (a >= 1 and b == c == 0) or (b >= 1 and c >= 1) or (a >= 1 and (b >= 2 or c >= 2)):
        ans += t[i]
print(ans)