白駿/ピアス/1380


Question
質問リンク
Silver 5
パスカル高校に通う多くの女子生徒が規定のないイヤリングをつけて逃げる.Sneddon教頭は揺れる赤い長いイヤリングを見るたびに没収した.
校監の先生は、ピアスを没収された女子学生たちのデジタルリストを作っている.そして没収したピアスの後ろに女子生徒の番号と勝手に選んだ「A」や「B」を書いた.
すべての正規の仕事と放課後の監禁が終わった後、女子学生たちは先生にイヤリングを返してもらう.残念なことに、ある日、教頭はイヤリング付きの封筒をなくして、ずっと一つも見つからなかった.
イヤリングを受け取らずに怒った女の子の名前を教監先生に教えてください.
Input
入力は番号スキームで構成されます.シナリオ番号は1から順に増加し、各シナリオには次の内容が含まれます.
  • 行にピアスを没収された女子生徒数n(1≦n≦100).
  • 次の行にはn人の女の子の名前(最大60文字)があります.
  • 以降の2 n行では、女の子番号と「A」または「B」の間にスペースがあります.番号は校監先生の女子学生のリストと順番が一致している.つまり、1は最初に没収された女の子です.女性番号は最大2回まで登場し、2回目の登場時には、1回目とは異なる「A」または「B」と書かれています.
    番号が最初に現れたのは没収を意味し、2回目に現れたのは返却されたことを意味する.
  • 最後の行の終了として0を入力します.「0」は処理されません.
    3
    Betty Boolean
    Alison Addaway
    Carrie Carryon
    1 B
    2 A
    3 B
    3 A
    1 A
    2
    Helen Clark
    Margaret Thatcher
    1 B
    2 B
    2 A
    0
    Output
    シナリオ番号と未返却ピアスの女の子の名前をスペースで区切って、行ごとに印刷してください.
    1 Alison Addaway
    2 Helen Clark
    Logic
    基本構造きほんこうぞう:loop
    1.行ごとに読み取り、分離してリストに保存します.
    1-1. リスト要素が1つの場合、新しいシナリオまたは終了文です.
    1-1-1. 0の場合、tmpをmissingに追加しloopを終了します.
    1-1-2. それ以外に、新しいシナリオを行うために、missにtmpを追加し、tmpとdicを空にし、dicに新しい学生リストを入力します.
    1-2. 2つのリスト要素がある場合は、奪ったり返したりします.a、bは気にせず、前の数字だけを比較して、1回目の登場ではtmpに要素を入れ、2回目の登場ではtmpで要素を抜きます.
    2.繰り返し文から逃れると、missingの要素がルールに従って出力されます.
    Code
    from sys import stdin
    
    missed = []
    tmp = []
    dic = {}
    
    N = stdin.readline().strip().split()
    
    while(True):
        if len(N) == 1:
            if N[0] == '0' : 
                missed.extend(tmp)
                break
            else:
                missed.extend(tmp)
                tmp.clear()
                dic.clear()
                for i in range(1,int(N[0])+1):
                    dic[i] = stdin.readline().strip()
        else:
            t = dic[int(N[0])]
            if t not in tmp : tmp.append(t)
            else : tmp.remove(t)
        N = stdin.readline().strip().split()
    
    print('\n'.join([str(i+1)+" "+missed[i] for i in range(len(missed))]))