2021-06-30に更新

Paizaレベルアップ問題集のメモ

自分用メモ(paiza問題集)

Paizaレベルアップ問題集に取り組んだ内容で気になったことについて、自分用のメモ

標準入力の取得

入力がh行、w列で与えられるとき、以下のように取得することでコードを短く書ける。listの値のところに、for文を書ける!

    5 3
    ###
    ###
    ###
    ###
    ###
h, w = map(int, input().split())
s = [list(input()) for _ in range(h)]

少し、詰まったのでメモ・・・
予め0で埋めた2次元リストを作成しようと思い、以下のコードで作成したところ、1行の値を書き換えたら、他の行の値も変更された。これは、1つの[0,0,0]の配列を各行が指し示している状態になっていたようだ。。。

g = [[0 for _ in range(3)]]*3

>> [[0,0,0],[0,0,0],[0,0,0]]

g[0][1] = 1

>> [[0,1,0],[0,1,0],[0,1,0]]

これを回避するために、以下のようにした。

g = []
for i in range(3):
    g.append([0 for _ in range (3)])

これでもできるけど、調べたら、以下のほうがきれいな気がする。。。

g = [[0] * n for _ in range(3)]

しかし、最初のコードがだめなら、このコードは一つの[0]を複数行、列で見てることにならないの。。。?だれか教えてください。。。

座標計算

  • 方角の計算方法

自分が向いている方角から、北(0),東(1),南(2),西(3)として、
右に行くときは、(1+[現在の方角])%4で次に自分が向く方角が求められる。
また、左に行くときは(3+[現在の方角])%4で求められる。

directions = ["N", "E", "S", "W"]
now_direction = 0

lr = input()
if lr == "L":
    now_direction = (3 + now_direction) % 4
else:
    now_direction = (1 + now_direction) % 4

ツイッターでシェア
みんなに共有、忘れないようにメモ

k-s-p

Crieitは誰でも投稿できるサービスです。 是非記事の投稿をお願いします。どんな軽い内容でも投稿できます。

また、「こんな記事が読みたいけど見つからない!」という方は是非記事投稿リクエストボードへ!

有料記事を販売できるようになりました!

こじんまりと作業ログやメモ、進捗を書き残しておきたい方はボード機能をご利用ください。
ボードとは?

コメント