BETA

初心者日記(13)『二次元配列がわからない』

投稿日:2020-07-03
最終更新:2020-07-03

ABC036のB問題、回転を解いていた。まぁこれなら二次元配列として受け取り、それをforで一つずつ別の二次元配列に代入すればいいと考えていた。

n = int(input())  
s = [list(input()) for i in range(n)]  
t = [[0] * n] * n  
r = n - 1  

for i in range(n):  
    u = 0  
    for j in range(n):  
        t[u][r] = s[i][j]  
        u += 1  
    r -= 1  

for i in range(n):  
    print(''.join(t[i]))  

[][]で二次元配列を扱えたはず。なのだが入力例1を入力すると

4  
ooxx  
xoox  
xxxx  
xxxx  
↓  
xxxx  
xxxx  
xxxx  
xxxx  

こうなる。なぜかsで取得した一文字を一列全部に代入してしまう。だからそれぞれの行の末尾の記号が縦に並ぶだけになってしまう。調べてもいまいち原因がわからなかったので二次元配列は謎である。

その後

while文で一行ずつ出力するように考えた。これでACはしたがそれでも二次元配列がうまくいかなかったことに納得がいっていない...

n = int(input())  
p = [list(input()) for i in range(n)]  
q = []  
s = 0  

while s < n:  
    t = n - 1  
    while t >= 0:  
        q.append(p[t][s])  
        t -= 1  
    print(''.join(q))  
    q.clear()  
    s += 1  
技術ブログをはじめよう Qrunch(クランチ)は、プログラマの技術アプトプットに特化したブログサービスです
駆け出しエンジニアからエキスパートまで全ての方々のアウトプットを歓迎しております!
or 外部アカウントで 登録 / ログイン する
クランチについてもっと詳しく

この記事が掲載されているブログ

tnodino(つのでぃの)のブログ。日頃の内容を記事にしています。

よく一緒に読まれる記事

0件のコメント

ブログ開設 or ログイン してコメントを送ってみよう