# [이.취.코] Chap 4. 구현 - 왕실의 나이트

- Author: @mildsalmon
- Published: 2021-08-11
- Updated: 2021-08-13
- Source: http://blex.me/@mildsalmon/chap-4-%EA%B5%AC%ED%98%84-%EC%99%95%EC%8B%A4%EC%9D%98-%EB%82%98%EC%9D%B4%ED%8A%B8
- Tags: 파이썬, 한빛미디어, 이것이취업을위한코딩테스트다, 나동빈, 코딩테스트, 문제, 풀이, 구현, 왕실의나이트

---

# 1. 왕실의 나이트

- 난이도
	- 하
- 풀이 시간
	- 20분
- 시간 제한
	- 1초
- 메모리 제한
	- 128MB

### A. 문제

8 x 8 좌표평면.

나이트는 L자 형태로만 이동할 수 있고, 정원 밖으로 나갈 수 없다. 

1. 수평으로 두 칸 이동한 뒤에 수직으로 한 칸 이동하기
2. 수직으로 두 칸 이동한 뒤에 수평으로 한 칸 이동하기

행 위치는 1~8로 표현하고, 열 위치는 a~h로 표현한다.

나이트가 이동할 수 있는 경우의 수를 출력하라.

##### a. 예를 들면. 

- 나이트의 위치가 a1일 때 이동할 수 있는 경우의 수는 2가지다.
	- 오른쪽으로 두 칸 이동 후 아래로 한 칸 이동하기 (c2)
	- 아래로 두 칸 이동 후 오른쪽으로 한 칸 이동하기 (b3)

##### b. 입력 조건

- 첫째 줄에 8x8 좌표 평면상에서 현재 나이트가 위치한 곳의 좌표를 나타내는 두 문자로 구성된 문자열이 입력된다. 문자는 a1과 같이 열행으로 이뤄진다.

##### c. 출력 조건

- 첫째 줄에 나이트가 이동할 수 있는 경우의 수를 출력하라.

##### d. 테스트 케이스

- 입력 예시

	```

	a1

	```

- 출력 예시

	```

	2

	```
	
### B. 내 답안

```python

n = input()  
  
x_full = {'a': 1,  
		 'b': 2,  
		 'c': 3,  
		 'd': 4,  
		 'e': 5,  
		 'f': 6,  
		 'g': 7,  
		 'h': 8}  
# y_limit = '8'  
  
x = x_full[n[0]]  
y = n[1]  
  
count = 0  
  
# count = count + 1  
  
# one_commend = [1, 1, ]  
# two_commend = []  
  
# if x + 2 < 9 or x - 2 > 0:  
#   if y + 1 < 9 or y - 1 > 9:  
  commands = [['l','l','u'],  
			 ['l','l','d'],  
			 ['r','r','u'],  
			 ['r','r','d'],  
			 ['u','u','l'],  
			 ['u','u','r'],  
			 ['d','d','l'],  
			 ['d','d','r']]  
  
for command in commands:  
  x_copy = int(x)  
  y_copy = int(y)  
  
  for move in command:  
    if move == 'l':  
      x_copy = x_copy - 1  
	elif move == 'r':  
	  x_copy = x_copy + 1  
	elif move == 'u':  
	  y_copy = y_copy + 1  
	elif move == 'd':  
	  y_copy = y_copy - 1  
	  
  if x_copy > 0 and x_copy < 9 and y_copy > 0 and y_copy < 9:  
	count = count + 1  
print(count)

```

##### a. 회고

> 반성

- a, b, c를 보고 c언어에서 아스키 코드 변환이 생각났다. 그런데 파이썬에서 아스키코드 변환하는 법은 기억하지 못했다.
- x축과 y축이 이동하는 것이 익숙치 않아서 헤맸다. 

### C. 문제 해설

나이트가 이동할 수 있는 경로를 하나씩 확인하여 이동하면 된다. 다만 8x8 좌표 평면을 벗어나지 않도록 꼼꼼하게 검사하는 과정이 필요하다.

현재 위치를 기준으로 아래쪽과 오른쪽은 양수의 값을, 위쪽과 왼쪽은 음수의 값을 대입하였다.

##### a. 책 답안

[python-for-coding-test/3.py at master · ndb796/python-for-coding-test (github.com)](https://github.com/ndb796/python-for-coding-test/blob/master/4/3.py)

# 참고문헌

나동빈, "이것이 취업을 위한 코딩 테스트다 with 파이썬", 초판, 2쇄, 한빛미디어, 2020년

#코딩테스트 #파이썬 #나동빈 #한빛미디어 #구현 #왕실의나이트 #문제 #풀이
