세상을 바꾸는 개발자

[코딩테스트] 왕실의 나이트 (파이썬) 본문

코딩테스트/Python

[코딩테스트] 왕실의 나이트 (파이썬)

헬창코딩 2021. 9. 1. 20:19

< 왕실의 나이트> : 난이도  하

 

<문제>

행복 왕국의 왕실 정원은 체스판과 같은 8 × 8 좌표 평면이다. 왕실 정원의 특정한 한 칸에 나이트가 서있다.
나이트는 매우 충성스러운 신하로서 매일 무술을 연마한다
나이트는 말을 타고 있기 때문에 이동을 할 때는 L자 형태로만 이동할 수 있으며 정원 밖으로는 나갈 수 없다
나이트는 특정 위치에서 다음과 같은 2가지 경우로 이동할 수 있다

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


이처럼 8 × 8 좌표 평면상에서 나이트의 위치가 주어졌을 때 나이트가 이동할 수 있는 경우의 수를 출력하는
프로그램을 작성하라. 왕실의 정원에서 행 위치를 표현할 때는 1부터 8로 표현하며, 열 위치를 표현할 때는
a부터 h로 표현한다

  • c2에 있을 때 이동할 수 있는 경우의 수는 6가지이다
  • a1에 있을 때 이동할 수 있는 경우의 수는 2가지이다

<입력 조건>

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

<출력 조건>

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

<입력 예시>

  • a1

<출력 예시>

  • 2

 

[나만의 풀이]

point = input("나의 위치를 입력하세요 a~h까지 1~8까지")

x = int(point[1])
y = int(ord(point[0])) - int(ord('a')) + 1
count = 0;
move_point = [(-2,-1),(-2,1),(-1,2),(1,2),(2,1),(2,-1),(1,-2),(-1,-2)]
for item in move_point:
    new_x = x + item[0]
    new_y = x + item[1]
    if new_x > 0 and new_x < 9 and new_y > 0 and new_y < 9 :
       count += 1

print(count)

 

실행결과

 

< 나의 풀이 방법 >

사실 이번 문제도 엄청 쉬운 문제였습니다. 이번에도 탐색 느낌이 강했습니다. 

말이 이동할 수 있는 경우의 수는 총 8번이고 이것을 좌표로 된 배열을 만들고 사용자가 입력한 좌표에서 더해준 후 

말이 맵의 밖으로 나갔는지 아닌지만 체크해주면 간단하게 풀 수 있는 문제였네요~

 

참고한 책 주소

https://book.naver.com/bookdb/book_detail.nhn?bid=16439154

Comments