[イコール]体現-王室の夜


これが符号化テストであり,Che 04が実施する実際の問題である.
4-2王室の夜
問題の説明
王室庭園とチェス盤は8×8座標平面です.
ナイトが特定の格子に立っているとき,ナイトが移動できれば数を求める.
ナイトはL字形でしか移動できず、庭を離れることはできません(map).
1.2つの水平グリッドを移動した後、1つの垂直グリッドを移動
2.2つの垂直グリッドを移動した後、1つの水平グリッドを移動
Input
loc->str:night現在位置の座標.2文字からなる:ex)a 1
Output
cnt->int:ナイトが移動可能な場合の数
Limit
time : 1 second
memory : 128 MB
インプリメンテーションコード
Analysis
時間複雑度:O(1)
空間複雑度:O(1)
def solve(loc):
    # 나이트가 맵 안에서 L자로 이동할 수 있는 좌표의 수 구하기
    cnt = 0
    limit = 8
    x, y = ord(loc[0]) - ord("a"), int(loc[1]) - 1
    steps = [
    	[-1, 2], [2, -1], [-1, -2], [-2, -1], 
    	[1, 2], [2, 1], [1, -2], [-2, 1]
        ]

    # 이동 가능한 8방위의 좌표로 이동했을 때 맵을 벗어나지 않는다면 카운트
    for dx, dy in steps:
        if (0 <= x + dx < limit) and (0 <= y + dy < limit):
            cnt += 1
    return cnt
テストコード
class testSolve(unittest.TestCase):
    def testcase(self):
        self.assertEqual(solve("a1"), 2)


unittest.main()