새소식

자료구조&알고리즘/알고리즘

구현_이코테: 왕실의 나이트

  • -

<문제> 왕실의 나이트

행복 왕국의 왕실 정원은 체스판과 같은 8 X 8 좌표 평면입니다. 왕실 정원의 특정한 한 칸에 나이트가 서있습니다.

나이트는 말을 타고 있기 때문에 이동할 때는 L자 형태로만 이동할 수 있으며 정원 밖으로 나갈 수 없습니다.

나이트는 특정 위치에서 다음과 같은 2가지 경우로 이동할 수 있습니다.

1. 수평으로 두 칸 이동 후 수직으로 한 칸 이동

2. 수직으로 두 칸 이동 후 수평으로 한 칸 이동

이처럼 8 X 8 좌표 평면 상에서 나이트의 위치가 주어졌을 때 나이트가 이동할 수 있는 경우의 수를 출력하는 프로그램을 작성하세요. 왕실의 정원에서 행 위치를 표현할 때는 1부터 8로 표현하며, 열 위치를 표현할 때는 a부터 h로 표현합니다

- c2에 있을 때 이동할 수 있는 경우의 수는 6가지 입니다.

<문제 해결 아이디어>

요구사항대로 충술히 구현하면 되는 문제

나이트의 8가지 경로를 하나씩 확인하며 각 위치로 이동이 가능한지 확인

리스트를 이용하여 8가지 방향에 대한 방향 벡터를 정의

 

# 위치 입력
input_data = 'a1'
row = int(input_data[1])
col = int(ord(input_data[0])) - int(ord('a')) + 1

# 나이트가 이동할 수 있는 8가지 방향
steps = [(-2, -1), (-1, -2), (1, -2), (2, -1), (2, 1), (1, 2), (-1, 2), (-2, 1)]

# 8가지 방향에 대해 각 위치로 이동 가능한지 확인
count = 0
for step in steps:
  next_row = row + step[0]
  next_col = col + step[1]
  # 해당 위치로 이동 가능하면 카운트 증가
  if next_row >= 1 and next_row <= 8 and next_col >= 1 and next_col <= 8:
    count += 1

print(count)

 

728x90

'자료구조&알고리즘 > 알고리즘' 카테고리의 다른 글

완전탐색_PRO #42839: 소수찾기  (0) 2022.05.10
완전탐색_PRO #42840: 모의고사  (0) 2022.05.10
구현_이코테: 시각  (0) 2022.05.08
구현_이코테: 상하좌우  (0) 2022.05.07
다이나믹 프로그래밍  (0) 2022.04.18
Contents