[SWEA] [1210] Ladder [python]


昼休みに散歩する職員たちは最近暑くなり、梯子遊びで誰がアイスクリームを買うかを決めることにした.
金代理は梯子を登るのではなく、梯子を描くことにした.
梯子を描いた後、金代理店はどの梯子を選んでX標に着くか知りたい.ちょっとやりましょう.

以下の<図1>の例では、始点x=0とx=9の垂直方向の2つのロッドの間に任意の数のロッド(本例では2つ追加)がランダムに追加され、これらのロッドの間の横方向の直線もランダムに接続されていることを示している.
X=0の始点からの事例では,矢印のように下に進むと左右に移動可能なチャネルが出現すると方向転換を行う.
転向すると、再び下に移動するだけで、地面に着くと止まります.
質問のXマークに到達するには、X=4の起点から出発しなければならないので、答えは4です.この経路は別途明記する.
<図1>はしごゲーム説明(ミニマップ)
指定されたはしごについては、指定された到達点に対応する始点X(「0」が充填された平面上では、はしごは連続する「1」、到達点は「2」)を返します.下図2>に示します.
<図2>テストケースによって生成された実際の梯子の外観
[制限]
1本の棒からの横線がもう1本の棒を通って連続していない場合.
[入力]
ファイルの最初の行には、テスト・ケースの番号が入力され、次の行にはテスト・ケースが表示されます.
合計10件のテストケースがあります.
[出力]
#コードとともにテスト用例の番号を出力し、スペース文字の後に到達する始点のx座標を出力します.
号、、、、
答えは得られませんでしたが、3時間かかりました.
復習しなければなりませんが、、、
これからは必ず70分で終わると決心した.
ハムスターだけがまだこの問題を解くことができない.
for tc in range(1, 11):
    number = int(input())
    ladder = [list(map(int, input().split())) for _ in range(100)]
     
    c = 0
    r = 99
     
    for i in range(100):
        if ladder[99][i] == 2:                   
            c = i
            
 
    while True:
         
        if r == 0: 
            break
        
        if 0 < c < 100 and ladder[r][c-1] == 1:
             
            while 0 < c < 100 and ladder[r][c-1] == 1:
                c -= 1
 
            else:
                r -= 1 
         
        elif -1 < c < 99 and ladder[r][c+1] == 1:
             
            while -1 < c < 99 and ladder[r][c+1] == 1:
                c += 1
            else:
                r -= 1 
                 
        else: 
            r -= 1
         
 
    print('#{} {}'.format(tc, c))
ねえ、
私は初めてelseがあることを知った.