[알고리즘 문제 풀이] 왕실의 나이트

이동욱

2021/09/01

Categories: 알고리즘

문제 - 왕실의 나이트


  1. 수평으로 두 칸 이동한 뒤에 수직으로 한 칸 이동하기.
  2. 수직으로 두 칸 이동한 뒤에 수평으로 한 칸 이동하기.

제한 사항


아이디어


코드


solution(x: int, y: int) -> int:
    count = 0
    xx = [-2, -1, 1, 2, 2, 1, -1, -2]
    yy = [1, 2, 2, 1, -1, -2, -2, -1]

    for i in range(len(xx)):
        if 1 <= (x + xx[i]) <= 8 and 1 <= y + yy[i] <= 8:
            count += 1
    return count


def solution2():
    input_data = input()
    x = int(input_data[1])
    y = int(ord(input_data[0])) - int(ord('a')) + 1

    steps = [
        (-2, -1), (-1, -2), (1, -2), (2, -1),
        (2, 1), (1, 2), (-1, 2), (-2, 1)
    ]
    result = 0
    for step in steps:
        next_row = x + step[0]
        next_col = y + step[1]

        if 1 <= next_row <= 8 and 1 <= next_col <= 8:
            result += 1
    print(result)


if __name__ == '__main__':
    split = list(input())
    hash_table = {'a': 1, 'b': 2, 'c': 3, 'd': 4, 'e': 5, 'f': 6, 'g': 7, 'h': 8}

    print(solution(hash_table[split[0]], int(split[1]))

개선할 점


참고 문헌


>> Home