My code
data = input()
row = int(data[1])
column = int(ord(data[0])) - int(ord('a')) + 1
steps = [(1,2),(2,1),(-1,-2),(-2,-1),(-2,1),(2,-1),(1,-2),(-1,2)]
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)
Answer
input_data = input()
row = int(input_data[1])
column = int(ord(input_data[0])) - int(ord('a')) + 1
steps = [(1,2),(2,1),(-1,-2),(-2,-1),(-2,1),(2,-1),(1,-2),(-1,2)]
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)
Code Review
이번 문제는 8 x 8 평면상에서 나이트의 위치가 주어졌을 때 나이트가 이동할 수 있는 경우의 수를 출력하는 문제였습니다. 따라서 열과 행을 입력 받았을 때 그 좌표 값을 row, column 변수에 각각 저장해주었습니다. steps 변수에 나이트가 이동할 수 있는 경로를 저장해주었습니다. 그런 다음 반복문을 이용하여 row 와 column 변수에 각각 steps 의 0번째 값과 1번째 값을 더해주었습니다. 만약 값을 더해주었을 때 1보다 크거나 같고, 8보다 작거나 같다면 평면상에 벗어나지 않고 존재하는 것이므로 result 를 1증가 시켜주어 경우의 수를 카운트해주었습니다. 반복문이 모두 종료되면 result (경우의 수) 를 출력하도록 해주었습니다.
댓글