체스판은 8x8로 이루어져 있습니다. 임의의 위치에 나이트를 놓았을때 이동할 수 있는 횟수는 몇가지가 될까요?
일단 최대 8개이지만 놓인 위치에 따라서 달라지겠지요
여기서 좌표를 단순히 숫자,숫자가 아니라 문자,숫자라고 가정해보겠습니다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
input_data = input()
row = int(input_data[1])
column = 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가지 방향에 대하여 각 위치로 이동이 가능한지 확인
result = 0
for step in steps:
#이동하고자 하는 위치 확인
next_row = row + step[0]
next_column = column + step[1]
#해당 위치로 이동이 가능하다면 카운트 증가
if next_row >= 1 and next_row <= 8 and next_column>=1 and next_column <=8:
result +=1
print(result)
일단 가장먼저 data를 입력받습니다. row는 처음부터 숫자이니 그대로 받으면 되지만 column열은 좀 달리할 필요가 있습니다. a를 입력받으면 이 수는 첫번째 수입니다. 즉 1로 처리하는게 편하겠지요
ord를 이용해서 아스키코드 값을 반환합니다. 만약 a라고 가정하면 97이 나올 것이고, 여기에다가 a의 아스키코드값을 빼주면 0이 됩니다. 여기서 1을 더하면 1부터 시작하는 것을 알 수 있습니다. b는 2가 되겠지요
그리고 이동할 수 있는 경우의수 8가지를 입력을 하고
각 스텝 8개를 돌려보면서 가능한 것을 확인을 하고 결과값을 반환을 하면 마무리 됩니다.
Comments powered by Disqus.