본문 바로가기
Algorithm Problem Solving/이코테 (나동빈 저)

[구현/시뮬레이션] 이코테 왕실의 나이트 (Python / 파이썬)

by ʚ⇜❅🎕̈❄⇝ɞ 2022. 6. 5.
728x90
반응형

이것이 취업을 위한 코딩 테스트다 with 파이썬 (나동빈 저) 4장 구현(Implementation), 시뮬레이션(simulation) 유형의 왕실의 나이트 문제는 8x8 좌표 평면상 내에서 L자 형태로만 이동하는 나이트가 이동할 수 있는 경우의 수를 구하는 문제이다.

 

이코테 4장 구현 왕실의 나이트 문제 정보

출처

- [한빛미디어] 이것이 취업을 위한 코딩 테스트다 with 파이썬 (나동빈 저)

- https://youtu.be/2zjoKjt97vQ

알고리즘 분류

- 구현, 시뮬레이션 (Implementation, simulation algorithm)

 

왕실의 나이트 문제 요약

  • 왕실 정원은 8x8 좌표 평면이다.
  • 나이트는 L자 형태로만 이동할 수 있으며 정원 밖으로 나갈 수 없다.
  • 나이트는 특정 위치에서 다음과 같이 2가지 경우로 이동할 수 있다.
    • 1. 수평으로 두 칸 이동한 뒤에 수직으로 한 칸 이동하기.
    • 2. 수직으로 두 칸 이동한 뒤에 수평으로 한 칸 이동하기.
  • 왕실의 정원에서 행 위치를 표현할 때에는 1부터 8로, 열 위치는 a부터 h로 표현한다.
  • 첫째 줄에 8x8 좌표 평면상에서 현재 나이트가 위치한 곳의 좌표를 나타내는 두 문자로 구성된 문자열이 입력된다. 입력 문자는 a1처럼 열과 행으로 이뤄진다.
  • 나이트가 이동할 수 있는 경우의 수를 구하여 출력한다.

문제 풀이 과정

  1. 현재 나이트의 위치를 입력받는다.
  2. 알파벳으로 표현된 나이트 위치의 열을 정수로 바꾼다. (ex. a -> 1, h -> 8)
  3. 이동할 수 있는 8가지 방향벡터를 정의한다.
  4. 8가지 방향으로 이동한 후의 위치가 정원 밖이 아니면 이동 가능하므로 카운트한다.
  5. 카운트한 횟수를 출력한다.

 

코드 및 설명
  • position - 입력받은 현재 나이트의 위치
  • column - 왕실 정원의 열 위치를 표현하는 리스트
  • col, row -  나이트 현재 위치의 열, 행
  • d_col, d_row, steps - 나이트가 이동할 8가지 방향의 열, 행 위치
  • count -  이동할 수 있는 경우의 수
  • next_col, next_row - 나이트 이동 후의 열, 행 위치
# 풀이 1
position = input()

column = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h']
col = int(column.index(position[0]) + 1)
row = int(position[1])

d_row = [1, 2, 2, 1, -1, -2, -2, -1]
d_col = [2, 1, -1, -2, -2, -1, 1, 2]

count = 0
for i in range(8):
    next_row = row + d_row[i]
    next_col = col + d_col[i]
    if 1 <= next_row <= 8 and 1 <= next_col <= 8:
        count += 1

print(count)
# 풀이 2
position = input()

col = int(ord(position[0]) - ord('a')) + 1
row = int(position[1])

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

count = 0
for step in steps:
    next_row = row + step[0]
    next_col = col + step[1]
    if 1 <= next_row <= 8 and 1 <= next_col <= 8:
        count += 1

print(count)

문자에 해당하는 유니코드 정수를 반환하는 ord() 함수를 알게 되어 활용을 자주 할 수 있을 것 같다.

 

이것이 취업을 위한 코딩 테스트다 with 파이썬 (나동빈 저) 4장 구현(Implementation), 시뮬레이션(simulation)의 왕실의 나이트 문제를 파이썬 python으로 풀어보았다.

728x90
반응형

댓글