[programmers]カタツムリ


質問する


カタツムリ匹

数字を反時計回りに入力します.
その値段.

配列による表示

に答える




ちょっと複雑な問題を見たら、まず配列にどう入れるか考えてみましょう.このような状況で、私は上記の方法で見方を変えました.
方向は下、右、対角線(左上)の3種類で、対応する順序です.そんなふうに考えを変えた.

improve


sum(answer, [])


ああ、不思議なもの[[1], [2, 12], [3, 13, 11], [4, 14, 15, 10], [5, 6, 7, 8, 9]]で展開された値は[1, 2, 12, 3, 13, 11, 4, 14, 15, 10, 5, 6, 7, 8, 9]のように1つの配列に変換されて出力されるべきである.
私.
a = []
for i in answer:
        a.extend(i)
このように答えの各配列を拡張しました
sum(answer,[])
これで配列に変換されます.
これは.
sum(iterable,start)
# start: 초기값. default 는 0이다
sumの2番目のstart変数を使用します.sumの2番目の変数として、初期値を加えることができます.start = []として指定し、[]answer内の配列を追加すると、リストに戻ります.sumを単純に数値リストの値加算に用いる方法をより効率的に利用できる.

dir


directionの設定では、もっと直感的にディックの社説を書いてみました.繰り返し使用するために、効果的に配列として使用することができます.

でも.

元のコード(右側)はもっと時間がかかりそうです.
最初のコードは方向を考慮して、1つまたは0つのx、yのrangeをチェックするので、nの数が多いほど、より速く動作するようです.