알고리즘 / 자료구조’ 시리즈

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

  • 0
  • 0
0
0

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. 내 답안


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)

참고문헌

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

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

0분전
작성된 댓글이 없습니다. 첫 댓글을 달아보세요!
    댓글을 작성하려면 로그인이 필요합니다.