베지밀

[Python] 이코테 구현 왕실의 나이트 본문

취준기록/코딩테스트

[Python] 이코테 구현 왕실의 나이트

vegimil 2024. 9. 23. 23:16

문제

전형적인 시뮬레이션, 완전 탐색 문제

 

 

💡아이디어

- 움직일 수 있는 경우의 수는 규칙에 따라 다음과 같다

move = [(-1, -2), (-1, 2), (-2, -1), (-2, 1), (1, -2), (1, 2), (2, -1), (2, 1)]

 

- 입력 1번 당 move를 한 번 씩 검사하면 되므로 시간 복잡도는 O(1)

 => 상수 시간 안에 계산이 가능함!

 

- 열과 행을 분리해서 변수 취급함으로써 더 효율적인 접근 가능

 

 

👩‍💻코드

location = input()

# a1 = 열 행
col = ord(location[0]) - ord('a') + 1
row = int(location[1])

cnt = 0

move = [(-1, -2), (-1, 2),
        (-2, -1), (-2, 1),
        (1, -2), (1, 2),
        (2, -1), (2, 1)]

for i in move:
  nc = col + i[0]
  nr = row + i[1]
  if nc < 1 or nc > 8 or nr < 1 or nr > 8:
    continue
  cnt += 1

print(cnt)