0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

paizaラーニング問題集「座標系での向きの変わる移動」を解き、感じたこと

Posted at

▼問題文のURL

▼考え方

現在の座標(x,y)と現在の向きをリストlで管理します。入力(=移動の向きL,R)と現在の向きに基づき、次の座標と次の向きを計算し出力します。向きは、0:北,1:東,2:南,3:西とします。

▼コード

X,Y,N = map(int,input().split())

# l: 現在の座標(x,y)と向きを表すリスト
l = [X,Y,0]

for _ in range(N):

    # d: 入力
    d = input()
    
    if d == "L":
        
        if l[2] == 0:
            # 次の座標の計算
            l[0] -= 1
        elif l[2] == 1:
            l[1] -= 1
        elif l[2] == 2:
            l[0] += 1
        elif l[2] == 3:
            l[1] += 1

        # 次の向きの計算
        l[2] -= 1

    else:
        
        if l[2] == 0:
            l[0] += 1
        elif l[2] == 1:
            l[1] += 1
        elif l[2] == 2:
            l[0] -= 1
        elif l[2] == 3:
            l[1] -= 1

        l[2] += 1

    print(l[0],l[1])

    if l[2] < 0:
        l[2] = 3
    elif l[2] > 3:
        l[2] = 0

▼感じたこと

私はコードを書く際に、いろいろなやり方が思いつけるようになりたいです。そもそも教科書的な良いやり方とは何なのかをまず身に着け、そのうえで、解答コード例の方針の内容や、その他の良いやり方に触れるべきだなと思いました。

求められることや制約条件が何なのか、ということが大事なのかなと思います。それらをまず踏まえて、最適なやり方がいろいろと思いつくようになりたいです。

参考までに、解答コードに比べて、私のコードは行数が11行多く(空行除く)、変数は1つ少なく、リストは同数でした。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?