[COS Pro 1급 Python] 1차 기출문제 6) 체스의 나이트

정은·2023년 8월 1일

COS Pro 1급

목록 보기
7/26
post-thumbnail

문제 6)

체스에서 나이트(knight)는 아래 그림과 같이 동그라미로 표시된 8개의 방향중 한 곳으로 한 번에 이동이 가능합니다.

image

단, 나이트는 체스판 밖으로는 이동할 수 없습니다.

체스판의 각 칸의 위치는 다음과 같이 표기합니다.
image
예를 들어, A번줄과 1번줄이 겹치는 부분은 'A1'이라고 합니다.

나이트의 위치 pos가 매개변수로 주어질 때, 나이트를 한 번 움직여서 이동할 수 있는 칸은 몇개인지 return 하도록 solution 함수를 완성해주세요.


매개변수 설명

나이트의 위치 pos가 solution 함수의 매개변수로 주어집니다.

  • pos는 A부터 H까지의 대문자 알파벳 하나와 1 이상 8이하의 정수 하나로 이루어진 두 글자 문자열입니다.
  • 잘못된 위치가 주어지는 경우는 없습니다.

return 값 설명

나이트를 한 번 움직여서 이동할 수 있는 칸의 개수를 return 해주세요.


예시
posreturn
"A7"3
예시 설명

나이트가 A7 위치에 있으면 아래 그림과 같이 왼쪽으로는 이동하지 못하고, 오른쪽으로는 맨 위를 제외한 나머지 세 칸으로 이동 가능합니다.
image
따라서, 3을 return 하면 됩니다.

주어진 문제 6) 코드

#You may use import as below.
#import math

def solution(pos):
    # Write code here.
    answer = 0
    return answer

#The following is code to output testcase.
pos = "A7"
ret = solution(pos)

#Press Run button to receive output.
print("Solution: return value of the function is", ret, ".")

Solution

주어진 문제 6) Solution 코드

이번에도 빈칸 채우기 문제가 아니라 함수 전체를 작성하는 문제이다.

#You may use import as below.
#import math

def solution(pos):
    # Write code here.
    answer = 0

    i = ord(pos[0]) - ord('A')
    j = int(pos[1]) - 1

    chess_x = [-2, -2, 1, 2]
    chess_y = [[-1, 1], [-2, 2], [-2, 2], [-1, 1]]

    for idx_x in range(len(chess_x)):
        for y in chess_y[idx_x]:
            if 0 <= i + chess_x[idx_x] <= 7 and 0 <= j + y <= 7:
                answer += 1

    return answer

#The following is code to output testcase.
pos = "A7"
ret = solution(pos)

#Press Run button to receive output.
print("Solution: return value of the function is", ret, ".")
profile
정니의 이런거 저런거 기록 일지 😛

0개의 댓글