이것이 코딩테스트다 with 파이썬 - Chp4. 구현_2. 왕실의 나이트

knight = input()
row = int(knight[1])
column = int(ord(knight[0])) - int(ord('a')) + 1
# ord 하나의 문자를 인자로 받고 해당 문자에 해당하는 유니코드 정수를 반환
# chr 하나의 정수를 인자로 받고 해당 정수에 해당하는 유니코드 문자를 반환

steps = [(2, -1), (2, 1), (1, 2), (-1, 2), (-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)

-> 조금 더 까다롭게 문제를 출제한다면 입력 문자가 열과 행이 아닌 1a와 같은 행과 열 형태로 들어왔을 때 예외 처리를 요구할 수도 있다.

좋은 웹페이지 즐겨찾기